Public Access
feat(meals): enforce three lower-calorie dinners with media
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import base64
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import Mock
|
||||
from uuid import UUID
|
||||
|
||||
from app.services import image_generation
|
||||
|
||||
|
||||
def test_generate_image_persists_local_url_and_openai_provenance(tmp_path, monkeypatch):
|
||||
recipe = SimpleNamespace(
|
||||
id=UUID("12345678-1234-5678-1234-567812345678"),
|
||||
name="Spiced Chickpea Bowl",
|
||||
ingredients=[{"name": "chickpeas"}],
|
||||
cuisine_tags=["Mediterranean"],
|
||||
image_url=None,
|
||||
image_source=None,
|
||||
)
|
||||
db = Mock()
|
||||
image_bytes = b"mock-png-bytes"
|
||||
response = Mock(status_code=200)
|
||||
response.json.return_value = {
|
||||
"data": [{"b64_json": base64.b64encode(image_bytes).decode()}]
|
||||
}
|
||||
post = Mock(return_value=response)
|
||||
|
||||
monkeypatch.setattr(image_generation.settings, "AI_IMAGE_ENABLED", True)
|
||||
monkeypatch.setattr(image_generation, "_openai_api_key", lambda: "test-key")
|
||||
monkeypatch.setattr(image_generation, "STATIC_IMAGES_DIR", tmp_path)
|
||||
monkeypatch.setattr(image_generation.httpx, "post", post)
|
||||
monkeypatch.setenv("AI_IMAGE_MODEL", "gpt-image-1")
|
||||
|
||||
image_url = image_generation.generate_image_for_recipe(recipe, db=db)
|
||||
|
||||
assert image_url is not None
|
||||
assert image_url.startswith("/static/images/")
|
||||
assert (tmp_path / image_url.removeprefix("/static/images/")).read_bytes() == image_bytes
|
||||
assert recipe.image_url == image_url
|
||||
db.add.assert_called_once_with(recipe)
|
||||
db.commit.assert_called_once_with()
|
||||
assert recipe.image_source
|
||||
assert "openai" in recipe.image_source.lower()
|
||||
assert "gpt-image-1" in recipe.image_source.lower()
|
||||
Reference in New Issue
Block a user