da5177c950
DB-free host-agnostic helpers: image_url() builds the canonical hosted Image Src for a fetched image; parse_image_id() recognizes one on re-import via path-parse so exports round-trip across localhost/PPE/rebrand (INV-12). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
"""hosted-image URL helpers — round-trip recognition (SD-0002 §6.3.1, INV-12)."""
|
|
from app.domains.products import hosted
|
|
|
|
|
|
def test_build_relative_when_no_base():
|
|
assert hosted.image_url("", 42, "detail") == "/api/products/images/42/detail"
|
|
|
|
|
|
def test_build_absolute_with_base():
|
|
url = hosted.image_url("https://ecomm-ppe.wiggleverse.org", 42, "detail")
|
|
assert url == "https://ecomm-ppe.wiggleverse.org/api/products/images/42/detail"
|
|
|
|
|
|
def test_parse_absolute_hosted_url():
|
|
url = "https://market.wiggleverse.org/api/products/images/7/detail"
|
|
assert hosted.parse_image_id(url) == 7
|
|
|
|
|
|
def test_parse_relative_hosted_url():
|
|
assert hosted.parse_image_id("/api/products/images/7/card") == 7
|
|
|
|
|
|
def test_parse_ignores_query_and_trailing():
|
|
assert hosted.parse_image_id("/api/products/images/7/detail?v=1") == 7
|
|
|
|
|
|
def test_parse_non_hosted_returns_none():
|
|
assert hosted.parse_image_id("https://cdn.example.com/a/b.png") is None
|
|
assert hosted.parse_image_id("/api/products/images/abc/detail") is None
|
|
assert hosted.parse_image_id("/api/products/images/7") is None
|