修复:CI 部署环境与 ref 错配、迁移碎片化、图片意图 source_span、章节物化脏版式、会话历史与本地语音不一致
新增:TTS 上传 COS 与分片、章节 reading_segments 物化与快照、markdown 清洗、会话消息 repository、语音 store 重构与相关测试
This commit is contained in:
@@ -2,36 +2,43 @@ import unittest
|
||||
|
||||
from app.features.memoir.chapter_markdown_compose import (
|
||||
compose_ordered_stories_to_markdown,
|
||||
compose_ordered_stories_to_pdf_markdown,
|
||||
materialize_chapter_markdown_from_loaded_chapter,
|
||||
)
|
||||
|
||||
|
||||
class ChapterMarkdownComposeTest(unittest.TestCase):
|
||||
def test_orders_and_separates_with_headings(self):
|
||||
def test_joins_bodies_with_hr_only_no_story_headings(self):
|
||||
md = compose_ordered_stories_to_markdown(
|
||||
[("第一章", "正文A"), ("第二章", "正文B")]
|
||||
)
|
||||
self.assertIn("## 第一章", md)
|
||||
self.assertNotIn("##", md)
|
||||
self.assertIn("正文A", md)
|
||||
self.assertIn("## 第二章", md)
|
||||
self.assertIn("正文B", md)
|
||||
self.assertIn("\n\n---\n\n", md)
|
||||
self.assertTrue(md.index("正文A") < md.index("---"))
|
||||
self.assertTrue(md.index("---") < md.index("第二章"))
|
||||
self.assertTrue(md.index("第一章") < md.index("第二章"))
|
||||
self.assertTrue(md.index("---") < md.index("正文B"))
|
||||
|
||||
def test_preserves_asset_refs(self):
|
||||
body = ""
|
||||
md = compose_ordered_stories_to_markdown([("S", body)])
|
||||
self.assertIn("asset://abc-123", md)
|
||||
|
||||
def test_empty_title_uses_fallback(self):
|
||||
def test_empty_title_still_composes_body(self):
|
||||
md = compose_ordered_stories_to_markdown([("", "仅正文")])
|
||||
self.assertIn("## 故事", md)
|
||||
self.assertEqual(md, "仅正文")
|
||||
self.assertNotIn("##", md)
|
||||
|
||||
def test_empty_body_keeps_heading_only(self):
|
||||
def test_empty_body_skipped(self):
|
||||
md = compose_ordered_stories_to_markdown([("仅标题", "")])
|
||||
self.assertEqual(md, "## 仅标题")
|
||||
self.assertEqual(md, "")
|
||||
|
||||
def test_pdf_markdown_includes_story_headings(self):
|
||||
md = compose_ordered_stories_to_pdf_markdown(
|
||||
[("第一章", "正文A"), ("第二章", "正文B")]
|
||||
)
|
||||
self.assertIn("## 第一章", md)
|
||||
self.assertIn("## 第二章", md)
|
||||
|
||||
def test_materialize_respects_order_index(self):
|
||||
class _S:
|
||||
@@ -56,3 +63,4 @@ class ChapterMarkdownComposeTest(unittest.TestCase):
|
||||
)()
|
||||
md = materialize_chapter_markdown_from_loaded_chapter(ch)
|
||||
self.assertLess(md.index("先"), md.index("后"))
|
||||
self.assertNotIn("##", md)
|
||||
|
||||
Reference in New Issue
Block a user