style: auto-format with black + isort + prettier [skip ci-format-check]
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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 50s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 26s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m56s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m7s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m12s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m18s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m45s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m43s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m40s
AI Code Review / AI Code Review (pull_request) Successful in 6m51s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m53s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m8s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 43s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 55s

This commit is contained in:
CI Bot
2026-08-24 15:20:14 +00:00
parent 96bf8207de
commit 8f20de3c53
@@ -19,7 +19,6 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "apps", "
from packages.domain.generation_task import GenerationTask, GenerationTaskStatus
# ── Stubs ────────────────────────────────────────────────────────────────────
@@ -42,10 +41,13 @@ class StubGenerationTaskRepository:
return [t for t in self._store.values() if t.created_by_user_id == user_id]
def count_pending_by_user(self, user_id: str) -> int:
return len([
t for t in self._store.values()
if t.created_by_user_id == user_id and t.status == GenerationTaskStatus.PENDING
])
return len(
[
t
for t in self._store.values()
if t.created_by_user_id == user_id and t.status == GenerationTaskStatus.PENDING
]
)
def count_pending_total(self) -> int:
return len([t for t in self._store.values() if t.status == GenerationTaskStatus.PENDING])
@@ -194,6 +196,7 @@ def app(
def _make_client(app: FastAPI, db: MagicMock) -> TestClient:
from app.dependencies import get_db_session
app.dependency_overrides[get_db_session] = lambda: db
return TestClient(app)
@@ -230,11 +233,14 @@ class TestCreateEndpointFallback:
gen_task_repo.create(preview)
db, _ = _make_db_with_preview(preview)
with patch(
"packages.adapters.sqlalchemy_impl.generation_task_repository._to_domain",
return_value=preview,
), patch(
"app.api.routes.generation_tasks._writeback_edit_plan_config",
with (
patch(
"packages.adapters.sqlalchemy_impl.generation_task_repository._to_domain",
return_value=preview,
),
patch(
"app.api.routes.generation_tasks._writeback_edit_plan_config",
),
):
client = _make_client(app, db)
resp = client.post(
@@ -307,8 +313,11 @@ class TestCreateEndpointFallback:
assert resp.json()["items"][0]["is_preview"] is True
# 兜底查询 GenerationTaskModel 不应被调用(只可能查 EditPlanModel 做自动关联)
from packages.adapters.sqlalchemy_impl.models import GenerationTaskModel
for call_args in db.query.call_args_list:
assert call_args[0][0] is not GenerationTaskModel, "fallback should not query GenerationTaskModel for preview requests"
assert (
call_args[0][0] is not GenerationTaskModel
), "fallback should not query GenerationTaskModel for preview requests"
def test_fallback_resolution_mismatch_creates_new(
self,
@@ -320,10 +329,13 @@ class TestCreateEndpointFallback:
gen_task_repo.create(preview)
db, _ = _make_db_with_preview(preview)
with patch(
"packages.adapters.sqlalchemy_impl.generation_task_repository._to_domain",
return_value=preview,
), patch("app.api.routes.generation_tasks.safe_enqueue_generation_task", return_value=True):
with (
patch(
"packages.adapters.sqlalchemy_impl.generation_task_repository._to_domain",
return_value=preview,
),
patch("app.api.routes.generation_tasks.safe_enqueue_generation_task", return_value=True),
):
client = _make_client(app, db)
resp = client.post(
"/api/v1/generation/tasks",