fix/various fixes
This commit is contained in:
@@ -4,7 +4,7 @@ from types import SimpleNamespace
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from app.ports.image_gen import ImageResult, TaskStatus
|
||||
from app.tasks.memoir_tasks import generate_chapter_images
|
||||
from app.tasks.memoir_tasks import build_cos_key, generate_chapter_images
|
||||
|
||||
|
||||
_ONE_BY_ONE_PNG = base64.b64decode(
|
||||
@@ -12,9 +12,10 @@ _ONE_BY_ONE_PNG = base64.b64decode(
|
||||
)
|
||||
|
||||
|
||||
def _image_record(img_dict):
|
||||
def _cover_image_record(img_dict):
|
||||
d = dict(img_dict or {})
|
||||
return SimpleNamespace(
|
||||
id="cover-img-1",
|
||||
order_index=d.get("index", 0),
|
||||
placeholder=d.get("placeholder"),
|
||||
description=d.get("description"),
|
||||
@@ -33,7 +34,7 @@ def _image_record(img_dict):
|
||||
|
||||
|
||||
def _chapter_stub():
|
||||
rec = _image_record(
|
||||
rec = _cover_image_record(
|
||||
{
|
||||
"index": 0,
|
||||
"placeholder": "{{{{IMAGE:南方小镇的青石板路}}}}",
|
||||
@@ -42,19 +43,14 @@ def _chapter_stub():
|
||||
"url": None,
|
||||
}
|
||||
)
|
||||
section = SimpleNamespace(
|
||||
content="那条路我一直记得。",
|
||||
image_id="image-1",
|
||||
image_record=rec,
|
||||
order_index=0,
|
||||
)
|
||||
return SimpleNamespace(
|
||||
id="chapter-1",
|
||||
user_id="user-1",
|
||||
title="童年的夏天",
|
||||
category="childhood",
|
||||
sections=[section],
|
||||
images=[],
|
||||
canonical_markdown="# 标题\n\n那条路我一直记得。",
|
||||
sections=[],
|
||||
images=[rec],
|
||||
cover_image=None,
|
||||
)
|
||||
|
||||
@@ -76,6 +72,7 @@ class GenerateChapterImagesPersistenceTest(unittest.TestCase):
|
||||
get_sync_db_mock,
|
||||
):
|
||||
chapter = _chapter_stub()
|
||||
cover = chapter.images[0]
|
||||
db = Mock()
|
||||
db.execute.return_value.unique.return_value.scalar_one_or_none.return_value = (
|
||||
chapter
|
||||
@@ -83,11 +80,13 @@ class GenerateChapterImagesPersistenceTest(unittest.TestCase):
|
||||
get_sync_db_mock.return_value.__enter__.return_value = db
|
||||
get_sync_db_mock.return_value.__exit__.return_value = False
|
||||
|
||||
prompt_service_cls.return_value.build_prompt.return_value = {
|
||||
prompt_data = {
|
||||
"prompt": "A serene southern China town",
|
||||
"style": "watercolor",
|
||||
"size": "1024x1024",
|
||||
"prompt_context": "childhood: 童年的夏天",
|
||||
}
|
||||
prompt_service_cls.return_value.build_cover_prompt.return_value = prompt_data
|
||||
mock_gen = Mock()
|
||||
mock_gen.generate.return_value = ImageResult(
|
||||
status=TaskStatus.COMPLETED,
|
||||
@@ -97,14 +96,18 @@ class GenerateChapterImagesPersistenceTest(unittest.TestCase):
|
||||
mock_gen.download_image.return_value = _ONE_BY_ONE_PNG
|
||||
get_image_generator_mock.return_value = mock_gen
|
||||
storage_cls.from_env.return_value.upload_bytes.return_value = (
|
||||
"https://cos.example.com/memoirs/user-1/chapter-1/0.png"
|
||||
"https://cos.example.com/memoirs/user-1/chapter-1/cover.png"
|
||||
)
|
||||
|
||||
generate_chapter_images.run("chapter-1")
|
||||
|
||||
record = chapter.sections[0].image_record
|
||||
self.assertEqual(record.status, "completed")
|
||||
self.assertEqual(cover.status, "completed")
|
||||
self.assertEqual(
|
||||
record.url, "https://cos.example.com/memoirs/user-1/chapter-1/0.png"
|
||||
cover.url,
|
||||
"https://cos.example.com/memoirs/user-1/chapter-1/cover.png",
|
||||
)
|
||||
self.assertEqual(cover.prompt, "A serene southern China town")
|
||||
self.assertEqual(
|
||||
cover.storage_key,
|
||||
build_cos_key("user-1", "chapter-1", "cover", prompt_data["prompt"]),
|
||||
)
|
||||
self.assertEqual(record.prompt, "A serene southern China town")
|
||||
|
||||
Reference in New Issue
Block a user