| import json |
|
|
| from midnight_static.schema import Genre, Script |
| from midnight_static.writer import ( |
| SMOKE_PREMISES, |
| NemotronWriter, |
| build_writer_prompt, |
| extract_json_object, |
| get_writer, |
| parse_writer_json, |
| script_to_json_dict, |
| ) |
|
|
|
|
| def test_fixture_writer_returns_valid_scripts_for_smoke_premises(): |
| writer = get_writer("fixture") |
|
|
| for premise in SMOKE_PREMISES: |
| script = writer.write(premise, genre=Genre.WEIRD) |
| script.validate() |
| assert isinstance(script, Script) |
| assert script.genre == Genre.WEIRD |
| assert premise.split()[0].title().strip(".,:;!?") in script.title |
|
|
|
|
| def test_script_to_json_dict_validates_and_serializes(): |
| writer = get_writer("fixture") |
| script = writer.write("static") |
|
|
| payload = script_to_json_dict(script) |
|
|
| assert payload["title"] == script.title |
| assert payload["genre"] == Genre.WEIRD |
|
|
|
|
| def test_nemotron_writer_constructs_without_loading_model(): |
| writer = get_writer("nemotron") |
|
|
| assert isinstance(writer, NemotronWriter) |
| assert writer.model_id == "nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16" |
|
|
|
|
| def test_unknown_writer_is_rejected(): |
| try: |
| get_writer("missing") |
| except ValueError as exc: |
| assert "unknown writer" in str(exc) |
| else: |
| raise AssertionError("expected unknown writer to fail") |
|
|
|
|
| def test_extract_json_object_handles_fenced_output(): |
| raw = '```json\n{"title": "A", "nested": {"ok": true}}\n```\nextra' |
|
|
| assert extract_json_object(raw) == '{"title": "A", "nested": {"ok": true}}' |
|
|
|
|
| def test_parse_writer_json_round_trips_script_payload(): |
| script = get_writer("fixture").write("static") |
| raw = "prefix " + json.dumps(script_to_json_dict(script)) + " suffix" |
|
|
| parsed = parse_writer_json(raw) |
|
|
| assert parsed.title == script.title |
| assert parsed.genre == Genre.WEIRD |
|
|
|
|
| def test_writer_prompt_contains_schema_constraints(): |
| prompt = build_writer_prompt("static", Genre.WEIRD) |
|
|
| assert "strict JSON only" in prompt |
| assert '"genre": "weird"' in prompt |
| assert "am_michael" in prompt |
| assert "delivery" in prompt |
|
|