e3fb518ab2
- 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 残留清理
73 lines
2.1 KiB
Python
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"]
|