feat: return full product detail with images and versions

This commit is contained in:
2026-09-12 16:10:19 +08:00
parent dd3003609b
commit fe62a7f721
3 changed files with 104 additions and 27 deletions
+25
View File
@@ -313,6 +313,31 @@ def test_later_archive_version_becomes_current_cover_in_product_contract(product
assert detail["cover_image_id"] != first_cover
def test_product_detail_contract_includes_images_and_archive_versions(
product_archive_client, prepared_wordcloud_job
):
product = create_product(product_archive_client)
archived = archive_product_version(
product_archive_client, product["product_id"], prepared_wordcloud_job.document
)
detail = product_archive_client.get(
f"/api/products/{product['product_id']}", headers=orders_auth_header()
).json()
assert archived.status_code == 201
assert detail["product_id"] == product["product_id"]
assert len(detail["images"]) == 1
assert detail["images"][0]["image_type"] == "design_preview"
assert detail["images"][0]["is_cover"] is True
assert len(detail["versions"]) == 1
version = detail["versions"][0]
assert version["version_id"] == archived.json()["version_id"]
assert version["wordcloud_count"] == 1
assert version["wordcloud_archives"][0]["source_job_id"] == "job-success"
assert Path(version["design_preview_path"]).name == "design-preview.png"
def test_product_routes_require_orders_auth(product_archive_client):
product = create_product(product_archive_client)
requests = [