From 20fe9626a5acf7c350a8dcdcb656176ab2320237 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Fri, 28 Aug 2026 10:51:22 +0800 Subject: [PATCH] fix(tests): add background_tasks parameter for async MediaKit - All tests calling create_clips_from_assets_editor now pass background_tasks=MagicMock() - Remove test_mediakit_first_clip_uses_recommendation (no longer applicable with async MediaKit) - 35 tests in test_mediakit_smart_clips.py pass - 12 tests in test_editor_clips_random_start.py pass Task: I-P0-v2 --- tests/unit/test_editor_clips_random_start.py | 12 +++++ tests/unit/test_mediakit_smart_clips.py | 52 ++++---------------- 2 files changed, 21 insertions(+), 43 deletions(-) diff --git a/tests/unit/test_editor_clips_random_start.py b/tests/unit/test_editor_clips_random_start.py index a9471aaf6..8859d17bc 100644 --- a/tests/unit/test_editor_clips_random_start.py +++ b/tests/unit/test_editor_clips_random_start.py @@ -102,6 +102,7 @@ class TestEditorClipsBySegments: result = create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -137,6 +138,7 @@ class TestEditorClipsBySegments: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -167,6 +169,7 @@ class TestEditorClipsBySegments: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -197,6 +200,7 @@ class TestEditorClipsBySegments: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -231,6 +235,7 @@ class TestEditorClipsDurationAndStartTime: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -260,6 +265,7 @@ class TestEditorClipsDurationAndStartTime: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -289,6 +295,7 @@ class TestEditorClipsDurationAndStartTime: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -322,6 +329,7 @@ class TestEditorClipsDurationAndStartTime: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -352,6 +360,7 @@ class TestEditorClipsDurationAndStartTime: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -392,6 +401,7 @@ class TestEditorClipsDurationAndStartTime: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -436,6 +446,7 @@ class TestEditorClipsErrorHandling: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, @@ -466,6 +477,7 @@ class TestEditorClipsErrorHandling: create_clips_from_assets_editor( template_id="tpl-001", body=body, + background_tasks=MagicMock(), plan_id=TEST_PLAN_ID, services=(MagicMock(), mock_plan_svc), asset_repo=mock_asset_repo, diff --git a/tests/unit/test_mediakit_smart_clips.py b/tests/unit/test_mediakit_smart_clips.py index 69c1351c9..bf4523d8d 100644 --- a/tests/unit/test_mediakit_smart_clips.py +++ b/tests/unit/test_mediakit_smart_clips.py @@ -370,6 +370,7 @@ class TestFromAssetsByTemplateSegments: result = create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -397,6 +398,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -424,6 +426,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -455,6 +458,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -482,6 +486,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -513,6 +518,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=MagicMock(), @@ -539,6 +545,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -567,6 +574,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=mock_asset_repo, @@ -595,6 +603,7 @@ class TestFromAssetsByTemplateSegments: create_clips_from_assets_editor( template_id="tmpl-1", body=mock_body, + background_tasks=MagicMock(), plan_id="plan-1", services=(mock_tpl_svc, mock_plan_svc), asset_repo=MagicMock(), @@ -605,49 +614,6 @@ class TestFromAssetsByTemplateSegments: assert "素材" in exc_info.value.detail mock_plan_svc.replace_all_clips_transactional.assert_not_called() - @patch("app.api.routes.templates_editor.clips.get_mediakit_client") - @patch("app.api.routes.templates_editor.clips.get_storage_service") - def test_mediakit_first_clip_uses_recommendation(self, mock_storage, mock_client_fn): - """MediaKit 推荐时间用于每个素材的第一个片段。""" - from app.api.routes.templates_editor.clips import create_clips_from_assets_editor - from app.api.routes.templates_editor.schemas import ClipsFromAssetsRequest - - mock_client = MagicMock() - mock_client.is_available = True - mock_client.analyze_videos.return_value = [ - '[{"asset_id": "a1", "recommended_start_time": 15.0, "reason": "test"}]' - ] - mock_client_fn.return_value = mock_client - - mock_storage_svc = MagicMock() - mock_storage_svc.get_download_url.return_value = "https://example.com/v.mp4" - mock_storage.return_value = mock_storage_svc - - segments = [(0, 3.0, 5.0), (1, 3.0, 5.0)] - mock_tpl_svc = _make_tpl_svc_with_segments(segments) - mock_plan_svc = _make_plan_svc(replace_return_count=2) - - mock_asset_repo = MagicMock() - mock_asset_repo.get.return_value = _make_rich_asset("a1", 60.0) - - body = ClipsFromAssetsRequest(asset_ids=["a1"]) - create_clips_from_assets_editor( - template_id="tmpl-1", - body=body, - plan_id="plan-1", - services=(mock_tpl_svc, mock_plan_svc), - asset_repo=mock_asset_repo, - db=MagicMock(), - current_user=_make_auth_user(), - ) - - clips_data = _get_clips_data(mock_plan_svc) - # 第一个片段应使用推荐时间 15.0 - assert clips_data[0]["start_time"] == 15.0 - # 第二个片段(同一素材)不应使用推荐时间 - assert clips_data[1]["start_time"] != 15.0 - - # ── _safe_segment_duration 单元测试 ─────────────────────────────────────────