Files
xiaoxia-saas/tests/integration/test_upload_pipeline.py
API文档维护Agent e3fb518ab2
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
refactor: remove all workspace_id references from codebase
- Remove workspace_id from Pydantic models in project_management routes
- Remove workspace_id from SQLAlchemy and SQLite project management repos
- Remove workspace_id from worker tasks (storage keys, entity creation)
- Remove workspace_id from video dedup and title usage modules
- Remove workspace_id from generation and ingest worker tasks
- Clean workspace_id from all test files and scripts
- Remove workspace-specific test files (list_workspaces, workspace repos)

Task: #14 workspace_id 残留清理
2026-06-27 22:52:09 +08:00

73 lines
2.1 KiB
Python

from packages.adapters.in_memory import (
InMemoryAssetRepository,
InMemoryIngestJobRepository,
)
from packages.application import SubmitIngestJobCommand, SubmitIngestJobUseCase
from packages.domain import IngestJobStatus
def simulate_upload_and_ingest(
project_id: str,
library_id: str,
filename: str,
job_repo: InMemoryIngestJobRepository,
asset_repo: InMemoryAssetRepository,
) -> dict:
"""Simulate full upload → ingest pipeline."""
from uuid import uuid4
from tests.integration.test_ingest_pipeline import simulate_ingest_asset
# Mock storage: generate storage_key
storage_key = f"uploads/{uuid4().hex[:8]}/{filename}"
# Submit ingest job
use_case = SubmitIngestJobUseCase(job_repo)
job = use_case.execute(
SubmitIngestJobCommand(
project_id=project_id,
library_id=library_id,
storage_key=storage_key,
)
)
# Simulate worker task
result = simulate_ingest_asset(job.id, job_repo, asset_repo)
return {
"storage_key": storage_key,
"job_id": job.id,
"worker_result": result,
}
def test_upload_to_asset_full_pipeline():
"""Test full pipeline: upload → storage → ingest job → worker → asset created."""
job_repo = InMemoryIngestJobRepository()
asset_repo = InMemoryAssetRepository()
# Simulate upload
result = simulate_upload_and_ingest(
project_id="proj-1",
library_id="lib-1",
filename="demo-video.mp4",
job_repo=job_repo,
asset_repo=asset_repo,
)
assert "storage_key" in result
assert result["storage_key"].endswith("demo-video.mp4")
assert result["worker_result"]["status"] == "completed"
# Verify job was completed
job = job_repo.get(result["job_id"])
assert job is not None
assert job.status == IngestJobStatus.COMPLETED
assert job.result_asset_id != ""
# Verify asset was created
assets = asset_repo.list_by_library("lib-1")
assert len(assets) == 1
assert assets[0].name == "demo-video.mp4"
assert assets[0].storage_key == result["storage_key"]