41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from claridoc.models import Brief, LintReport
|
|
from claridoc.prompts import drafting_prompt, review_prompt, revision_prompt
|
|
from claridoc.structures import create_outline
|
|
from tests.helpers import brief_dict, make_sources
|
|
|
|
|
|
class PromptTests(unittest.TestCase):
|
|
def _korean_blog(self) -> Brief:
|
|
data = brief_dict()
|
|
data["title"] = "기술적 선택을 설명하는 글"
|
|
data["language"] = "ko-KR"
|
|
data["reader_goal"] = "안전한 구현 방식을 선택한다"
|
|
data["core_message"] = "기술 선택은 문제와 비용을 함께 설명해야 한다."
|
|
data["constraints"]["style_profile"] = "woowahan_tech_blog_ko"
|
|
return Brief.from_dict(data)
|
|
|
|
def test_korean_blog_prompts_separate_information_structure_from_sentence_form(self) -> None:
|
|
brief = self._korean_blog()
|
|
sources = make_sources()
|
|
outline = create_outline(brief, sources)
|
|
lint_report = LintReport(score=100.0, word_count=0, issues=[], metrics={})
|
|
|
|
draft = drafting_prompt(brief, outline, sources)
|
|
review = review_prompt(brief, outline, sources, "# draft", lint_report, "editor")
|
|
revision = revision_prompt(brief, outline, sources, "# draft", lint_report, [])
|
|
|
|
self.assertIn("semantic order, never as a sentence template", draft)
|
|
self.assertIn("첫 번째 제약은", draft)
|
|
self.assertIn("Information-architecture labels must not leak", review)
|
|
self.assertIn("real ordered sequences", review)
|
|
self.assertIn("Remove repeated ordinal sentence scaffolding", revision)
|
|
self.assertIn("real procedure, method, layer, or figure", revision)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|