Files
xiaoxia-saas/tests/integration/test_upload_pipeline.py
T
Xiaoxia AI b79d6718d6
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 21s
Deploy / Deploy Production (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
style: normalize python formatting gates
2026-06-21 06:52:19 +08:00

76 lines
2.2 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(
workspace_id: str,
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(
workspace_id=workspace_id,
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(
workspace_id="ws-1",
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"]