修复回忆录图片重试状态透传与前端展示
This commit is contained in:
@@ -2,6 +2,7 @@ import os
|
||||
import unittest
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from api.routers import chapters as chapters_module
|
||||
from api.routers.chapters import _chapter_to_dict
|
||||
|
||||
|
||||
@@ -69,7 +70,9 @@ class ChaptersRouterImagesTest(unittest.TestCase):
|
||||
)
|
||||
def test_chapter_to_dict_preserves_completed_asset_when_signing_fails(self, storage_cls):
|
||||
storage = Mock()
|
||||
storage.get_download_url.side_effect = RuntimeError("cos unavailable")
|
||||
storage.get_download_url.side_effect = chapters_module.CosDownloadUrlError(
|
||||
"cos unavailable", retryable=True, request_id="req-err"
|
||||
)
|
||||
storage_cls.from_env.return_value = storage
|
||||
|
||||
chapter = type(
|
||||
@@ -102,11 +105,9 @@ class ChaptersRouterImagesTest(unittest.TestCase):
|
||||
payload = _chapter_to_dict(chapter)
|
||||
|
||||
self.assertEqual(payload["images"][0]["status"], "completed")
|
||||
self.assertEqual(
|
||||
payload["images"][0]["url"],
|
||||
"https://life-echo-dev-1319381411.cos.ap-shanghai.myqcloud.com/memoirs/u1/c1/0-demo.png",
|
||||
)
|
||||
self.assertIsNone(payload["images"][0]["url"])
|
||||
self.assertEqual(payload["images"][0]["prompt"], "A serene southern China town")
|
||||
self.assertEqual(payload["images"][0]["error"], "image delivery unavailable")
|
||||
self.assertNotIn("storage_key", payload["images"][0])
|
||||
|
||||
@patch("api.routers.chapters.TencentCosStorageService")
|
||||
@@ -183,3 +184,40 @@ class ChaptersRouterImagesTest(unittest.TestCase):
|
||||
|
||||
self.assertEqual(len(payload["images"]), 1)
|
||||
self.assertEqual(payload["images"][0]["status"], "completed")
|
||||
|
||||
@patch("api.routers.chapters.TencentCosStorageService")
|
||||
@patch.dict(os.environ, {"MEMOIR_IMAGE_ENABLED": "true"}, clear=False)
|
||||
def test_chapter_to_dict_preserves_retryable_flag_for_failed_assets(self, storage_cls):
|
||||
storage_cls.from_env.return_value = Mock()
|
||||
|
||||
chapter = type(
|
||||
"ChapterStub",
|
||||
(),
|
||||
{
|
||||
"id": "chapter-1",
|
||||
"title": "童年的夏天",
|
||||
"content": "{{IMAGE:南方小镇的青石板路}}",
|
||||
"order_index": 0,
|
||||
"status": "completed",
|
||||
"category": "childhood",
|
||||
"images": [
|
||||
{
|
||||
"index": 0,
|
||||
"placeholder": "{{IMAGE:南方小镇的青石板路}}",
|
||||
"description": "南方小镇的青石板路",
|
||||
"status": "failed",
|
||||
"url": None,
|
||||
"error": "upload denied",
|
||||
"retryable": False,
|
||||
}
|
||||
],
|
||||
"updated_at": None,
|
||||
"is_new": False,
|
||||
"source_segments": [],
|
||||
},
|
||||
)()
|
||||
|
||||
payload = _chapter_to_dict(chapter)
|
||||
|
||||
self.assertEqual(payload["images"][0]["status"], "failed")
|
||||
self.assertFalse(payload["images"][0]["retryable"])
|
||||
|
||||
Reference in New Issue
Block a user