import unittest from api.services.memoir_images.parser import ( build_initial_image_assets, parse_image_placeholders, ) class MemoirImageParserTest(unittest.TestCase): def test_parse_image_placeholders_preserves_order_and_offsets(self): content = ( "那条路我一直记得。\n\n" "{{{{IMAGE:南方小镇的青石板路}}}}\n\n" "奶奶总坐在门口。\n\n" "{{{{IMAGE:奶奶坐在院子里的藤椅上}}}}" ) items = parse_image_placeholders(content, max_images=3) self.assertEqual([item["index"] for item in items], [0, 1]) self.assertEqual(items[0]["description"], "南方小镇的青石板路") self.assertEqual(items[1]["placeholder"], "{{{{IMAGE:奶奶坐在院子里的藤椅上}}}}") self.assertLess(items[0]["start_offset"], items[1]["start_offset"]) def test_build_initial_image_assets_marks_every_item_pending(self): placeholders = [ { "index": 0, "description": "南方小镇的青石板路", "placeholder": "{{{{IMAGE:南方小镇的青石板路}}}}", "start_offset": 10, } ] assets = build_initial_image_assets( placeholders=placeholders, provider="liblib", style="watercolor", size="1024x1024", now_iso="2026-03-10T10:00:00Z", ) self.assertEqual(assets[0]["status"], "pending") self.assertEqual(assets[0]["provider"], "liblib") self.assertEqual(assets[0]["url"], None)