Merge branch 'refactor/backend-architecture' into development
This commit is contained in:
@@ -3,7 +3,8 @@ import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from tasks.memoir_tasks import generate_chapter_images
|
||||
from app.ports.image_gen import ImageResult, TaskStatus
|
||||
from app.tasks.memoir_tasks import generate_chapter_images
|
||||
|
||||
|
||||
_ONE_BY_ONE_PNG = base64.b64decode(
|
||||
@@ -59,37 +60,40 @@ def _chapter_stub():
|
||||
|
||||
|
||||
class GenerateChapterImagesPersistenceTest(unittest.TestCase):
|
||||
@patch("tasks.memoir_tasks.SessionLocal")
|
||||
@patch("tasks.memoir_tasks.TencentCosStorageService")
|
||||
@patch("tasks.memoir_tasks.LiblibImageProvider")
|
||||
@patch("tasks.memoir_tasks.MemoirImagePromptService")
|
||||
@patch("tasks.memoir_tasks._release_chapter_image_lock")
|
||||
@patch("tasks.memoir_tasks._acquire_chapter_image_lock", return_value=True)
|
||||
@patch("app.tasks.memoir_tasks.get_sync_db")
|
||||
@patch("app.tasks.memoir_tasks.TencentCosStorageService")
|
||||
@patch("app.tasks.memoir_tasks.get_image_generator")
|
||||
@patch("app.tasks.memoir_tasks.MemoirImagePromptService")
|
||||
@patch("app.tasks.memoir_tasks._release_chapter_image_lock")
|
||||
@patch("app.tasks.memoir_tasks._acquire_chapter_image_lock", return_value=True)
|
||||
def test_successful_generation_persists_completed_status(
|
||||
self,
|
||||
_acquire_lock_mock,
|
||||
_release_lock_mock,
|
||||
prompt_service_cls,
|
||||
provider_cls,
|
||||
get_image_generator_mock,
|
||||
storage_cls,
|
||||
session_local_cls,
|
||||
get_sync_db_mock,
|
||||
):
|
||||
chapter = _chapter_stub()
|
||||
db = Mock()
|
||||
db.execute.return_value.unique.return_value.scalar_one_or_none.return_value = chapter
|
||||
session_local_cls.return_value = db
|
||||
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": "A serene southern China town",
|
||||
"style": "watercolor",
|
||||
"size": "1024x1024",
|
||||
}
|
||||
provider_inst = provider_cls.return_value
|
||||
provider_inst.submit_generation.return_value = {
|
||||
"status": "completed",
|
||||
"image_url": "https://provider.example.com/1.png",
|
||||
}
|
||||
provider_inst.download_image.return_value = _ONE_BY_ONE_PNG
|
||||
mock_gen = Mock()
|
||||
mock_gen.generate.return_value = ImageResult(
|
||||
status=TaskStatus.COMPLETED,
|
||||
task_id="",
|
||||
image_url="https://provider.example.com/1.png",
|
||||
)
|
||||
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"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user