c873bb635f
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 55s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 1m13s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m43s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m46s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m51s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m6s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m59s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m14s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 30s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m6s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 7m6s
CI/CD Pipeline / Build Staging API Image (push) Successful in 7m12s
AI Code Review / AI Code Review (pull_request) Failing after 6m19s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 39s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 8m57s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 1m2s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m55s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 1m9s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m16s
CI/CD Pipeline / Integration Tests (push) Successful in 3m12s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m13s
CI/CD Pipeline / Unit Tests (push) Successful in 14m24s
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Canary Release to Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 12m30s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 8s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com> Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
"""测试 #1294 修复:预览视频配音注入。
|
|
|
|
验证:
|
|
1. _load_task_info 正确加载 voice_ids
|
|
3. voice_ids 正确注入到 plan config 中(实际执行代码路径,diff-cover 可达)
|
|
"""
|
|
|
|
from pathlib import Path
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
|
|
class TestLoadTaskInfoVoiceIds:
|
|
"""验证 _load_task_info 包含 voice_ids"""
|
|
|
|
def test_voice_ids_loaded_from_task(self):
|
|
"""voice_ids 从 gen_task 正确加载"""
|
|
mock_task = MagicMock()
|
|
mock_task.project_id = "proj_1"
|
|
mock_task.asset_library_id = "lib_1"
|
|
mock_task.voice_library_id = "voice_lib_1"
|
|
mock_task.template_id = "tmpl_1"
|
|
mock_task.strategy_id = "one_take"
|
|
mock_task.asset_ids = ["a1", "a2"]
|
|
mock_task.batch_id = "batch_1"
|
|
mock_task.created_by_user_id = "user_1"
|
|
mock_task.video_title = "test"
|
|
mock_task.resolution = "854x480"
|
|
mock_task.bgm_config = {}
|
|
mock_task.is_preview = True
|
|
mock_task.voice_ids = ["voice_1", "voice_2"]
|
|
|
|
with patch(
|
|
"packages.adapters.sqlalchemy_impl.generation_task_repository.SQLAlchemyGenerationTaskRepository"
|
|
) as MockRepo:
|
|
mock_repo = MagicMock()
|
|
mock_repo.get.return_value = mock_task
|
|
MockRepo.return_value = mock_repo
|
|
|
|
from worker_app.tasks.generation import _load_task_info
|
|
|
|
result = _load_task_info("test_task_id")
|
|
|
|
assert result is not None
|
|
assert result["voice_ids"] == ["voice_1", "voice_2"]
|
|
|
|
def test_voice_ids_empty_when_none(self):
|
|
"""voice_ids 为 None 时返回空列表"""
|
|
mock_task = MagicMock()
|
|
mock_task.project_id = "proj_1"
|
|
mock_task.asset_library_id = "lib_1"
|
|
mock_task.voice_library_id = ""
|
|
mock_task.template_id = "tmpl_1"
|
|
mock_task.strategy_id = "one_take"
|
|
mock_task.asset_ids = ["a1"]
|
|
mock_task.batch_id = ""
|
|
mock_task.created_by_user_id = "user_1"
|
|
mock_task.video_title = ""
|
|
mock_task.resolution = ""
|
|
mock_task.bgm_config = {}
|
|
mock_task.is_preview = False
|
|
mock_task.voice_ids = None
|
|
|
|
with patch(
|
|
"packages.adapters.sqlalchemy_impl.generation_task_repository.SQLAlchemyGenerationTaskRepository"
|
|
) as MockRepo:
|
|
mock_repo = MagicMock()
|
|
mock_repo.get.return_value = mock_task
|
|
MockRepo.return_value = mock_repo
|
|
|
|
from worker_app.tasks.generation import _load_task_info
|
|
|
|
result = _load_task_info("test_task_id")
|
|
assert result["voice_ids"] == []
|