From ea953ed92ed64473b3cbc1887e6916eb3a75dc0f Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 10 Aug 2026 16:00:27 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=B0=81=E9=9D=A2=20?= =?UTF-8?q?stub=20=E5=8D=95=E6=B5=8B=EF=BC=8C=E9=AA=8C=E8=AF=81=20SVG=20da?= =?UTF-8?q?ta=20URI=20=E5=8D=A0=E4=BD=8D=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 test_cover_type_manual_with_frame_time:断言 SVG data URI + 手动选帧文字 - 更新 test_cover_type_ai_frame:断言 SVG data URI + 封面生成中文字 - 新增 test_stub_returns_svg_data_uri:验证 stub 不含 /api/v1/ 路径 - 新增 test_manual_stub_returns_svg_data_uri:验证 manual 模式 SVG 占位图 --- tests/unit/test_shared_ai_service.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_shared_ai_service.py b/tests/unit/test_shared_ai_service.py index f46002dbf..7603a90bb 100755 --- a/tests/unit/test_shared_ai_service.py +++ b/tests/unit/test_shared_ai_service.py @@ -431,7 +431,8 @@ class TestAiCoverService: result = _call_ai_cover_service("plan1", ["a1"], "manual", frame_time=5.5) assert result["type"] == "manual" assert result["frame_time"] == 5.5 - assert "5.5" in result["image_url"] + assert result["image_url"].startswith("data:image/svg+xml,") + assert "手动选帧" in result["image_url"] def test_cover_type_ai_frame(self): with patch("shared.ai_service.time.sleep"): @@ -440,7 +441,8 @@ class TestAiCoverService: assert result["type"] == "ai_frame" assert result["frame_time"] == 5.0 assert result["confidence"] == 0.9 - assert "plan1" in result["image_url"] + assert result["image_url"].startswith("data:image/svg+xml,") + assert "封面生成中" in result["image_url"] def test_cover_type_ai_regenerate(self): with patch("shared.ai_service.time.sleep"): @@ -451,3 +453,20 @@ class TestAiCoverService: with patch("shared.ai_service.time.sleep"): result = _call_ai_cover_service("plan1", ["a1"], "ai_frame") assert 1.0 <= result["frame_time"] <= 10.0 + + def test_stub_returns_svg_data_uri(self): + """stub 降级返回 SVG data URI,不含任何后端 API 路径.""" + with patch("shared.ai_service.time.sleep"): + result = _call_ai_cover_service("plan1", ["a1"], "ai_frame") + assert result["image_url"].startswith("data:image/svg+xml,") + assert "/api/v1/" not in result["image_url"] + assert "1080" in result["image_url"] + assert "1920" in result["image_url"] + + def test_manual_stub_returns_svg_data_uri(self): + """manual 模式返回 SVG data URI 占位图.""" + with patch("shared.ai_service.time.sleep"): + result = _call_ai_cover_service("plan1", ["a1"], "manual", frame_time=3.0) + assert result["image_url"].startswith("data:image/svg+xml,") + assert "/api/v1/" not in result["image_url"] + assert "手动选帧" in result["image_url"]