Files
life-echo/api/tests/test_memoir_image_parser.py

55 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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)
def test_parse_image_placeholders_accepts_double_brace_variant(self):
content = "开头。\n\n{{IMAGE:1938年初的上海弄堂口冬日萧瑟}}\n\n结尾。"
items = parse_image_placeholders(content, max_images=2)
self.assertEqual(len(items), 1)
self.assertEqual(items[0]["placeholder"], "{{IMAGE:1938年初的上海弄堂口冬日萧瑟}}")
self.assertEqual(items[0]["description"], "1938年初的上海弄堂口冬日萧瑟")