feat: polish generation demo workflow
This commit is contained in:
@@ -9,6 +9,14 @@ from app.core.config import settings
|
||||
from app.services.adapters.storybook.primary import Storybook, StorybookPage
|
||||
|
||||
|
||||
def assert_legacy_generation_headers(response, successor: str) -> None:
|
||||
"""Assert that compatibility generation endpoints point callers to the unified API."""
|
||||
|
||||
assert response.headers["Deprecation"] == "true"
|
||||
assert response.headers["X-DreamWeaver-Successor-Endpoint"] == successor
|
||||
assert response.headers["Link"] == f'<{successor}>; rel="successor-version"'
|
||||
|
||||
|
||||
def build_storybook_output() -> Storybook:
|
||||
"""Create a reusable mocked storybook payload."""
|
||||
|
||||
@@ -62,6 +70,7 @@ class TestStoryGenerate:
|
||||
json={"type": "keywords", "data": "小兔子, 森林, 勇气"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert_legacy_generation_headers(response, "/api/generations")
|
||||
data = response.json()
|
||||
assert "id" in data
|
||||
assert "title" in data
|
||||
@@ -317,6 +326,7 @@ class TestGenerateFull:
|
||||
json={"type": "keywords", "data": "小兔子, 森林, 勇气"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert_legacy_generation_headers(response, "/api/generations")
|
||||
data = response.json()
|
||||
assert "id" in data
|
||||
assert "title" in data
|
||||
@@ -394,6 +404,7 @@ class TestUnifiedGenerations:
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert "Deprecation" not in response.headers
|
||||
data = response.json()
|
||||
assert data["id"] is not None
|
||||
assert data["mode"] == "generated"
|
||||
@@ -534,6 +545,10 @@ class TestImageGenerateSuccess:
|
||||
):
|
||||
response = auth_client.post(f"/api/image/generate/{test_story.id}")
|
||||
assert response.status_code == 200
|
||||
assert_legacy_generation_headers(
|
||||
response,
|
||||
f"/api/generations/{test_story.id}/retry-assets",
|
||||
)
|
||||
data = response.json()
|
||||
assert data["image_url"] == "https://example.com/image.png"
|
||||
assert data["generation_status"] == "completed"
|
||||
@@ -557,6 +572,10 @@ class TestAssetRetry:
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert_legacy_generation_headers(
|
||||
response,
|
||||
f"/api/generations/{degraded_story_with_text.id}/retry-assets",
|
||||
)
|
||||
data = response.json()
|
||||
assert data["image_url"] == "https://example.com/image.png"
|
||||
assert data["generation_status"] == "completed"
|
||||
@@ -585,6 +604,10 @@ class TestAssetRetry:
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert_legacy_generation_headers(
|
||||
response,
|
||||
f"/api/generations/{storybook_story.id}/retry-assets",
|
||||
)
|
||||
data = response.json()
|
||||
assert data["generation_status"] == "completed"
|
||||
assert data["image_status"] == "ready"
|
||||
|
||||
Reference in New Issue
Block a user