53 lines
2.6 KiB
Python
53 lines
2.6 KiB
Python
import json
|
|
from pathlib import Path
|
|
import sys
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
from test_prompter_native_qwen import prompter
|
|
|
|
|
|
class RequestCompilationTests(unittest.TestCase):
|
|
def test_request_is_authority_and_selected_drafts_are_not_context(self):
|
|
sections = {"scene": "Previous railway scene", "camera": "Old camera", "acting": "Keep her tired performance"}
|
|
system, user = prompter._assistant_instruction(
|
|
"t2va", sections, "Develop the requested shot", ["scene", "camera"],
|
|
request_text="Una donna posa una tazza sul tavolo.",
|
|
)
|
|
message = json.loads(user)
|
|
self.assertEqual(message["request"], "Una donna posa una tazza sul tavolo.")
|
|
self.assertEqual(message["existing_context"], {"acting": "Keep her tired performance"})
|
|
self.assertNotIn("Previous railway scene", user)
|
|
self.assertIn("in English", system)
|
|
self.assertIn("Never emit timing placeholders", system)
|
|
self.assertEqual(sections["scene"], "Previous railway scene")
|
|
|
|
def test_request_returns_generated_fields(self):
|
|
generated = {"scene": "A woman approaches a table holding a cup.", "camera": "A fixed eye-level composition holds the table in view."}
|
|
with patch.object(prompter, "native_json_chat", return_value=generated) as writer:
|
|
fields, report = prompter.rewrite_sections_with_ai(
|
|
"qwen_native", "", "__workflow__", "", "t2va", {"scene": "", "camera": ""},
|
|
target_keys=["scene", "camera"], request_text="Una donna posa una tazza sul tavolo.",
|
|
)
|
|
self.assertEqual(fields, generated)
|
|
self.assertEqual(report["rewritten_sections"], ["camera", "scene"])
|
|
self.assertIn('"request":', writer.call_args.args[2])
|
|
|
|
def test_request_echo_is_not_reported_as_success(self):
|
|
brief = "Una donna posa una tazza sul tavolo."
|
|
with patch.object(prompter, "native_json_chat", return_value={"scene": brief, "camera": brief}):
|
|
with self.assertRaisesRegex(RuntimeError, "echoed REQUEST"):
|
|
prompter.rewrite_sections_with_ai(
|
|
"qwen_native", "", "__workflow__", "", "t2va", {"scene": "", "camera": ""},
|
|
target_keys=["scene", "camera"], request_text=brief,
|
|
)
|
|
|
|
def test_single_field_rewrite_keeps_its_original_contract(self):
|
|
_, user = prompter._assistant_instruction("t2va", {"scene": "A quiet room"}, target_keys=["scene"])
|
|
self.assertEqual(json.loads(user)["rough_sections"], {"scene": "A quiet room"})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|