Files
xiaoxia-saas/tests/unit/test_1294_preview_voice_injection.py
T
xiaoxia 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
refactor: 统一渲染链路,预览即所得(-3370行) (#1479)
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-24 14:16:00 +08:00

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"] == []