Files

72 lines
2.2 KiB
Python
Raw Permalink Normal View History

2026-06-24 12:44:34 -07:00
from __future__ import annotations
from starlette.testclient import TestClient
from shopify import state as shopify_state
from shopify.viewer import create_shopify_viewer_app
def test_products_api_handles_strict_state_models_with_omitted_optional_fields() -> None:
shopify_state.state_from_json(
{
"products": {
"product-1": {
"id": "product-1",
"title": "Test Product",
"variants": [
{
"id": "variant-1",
"title": "Default",
"price": {"amount": "10.00", "currencyCode": "USD"},
}
],
}
},
"carts": {},
"policies": [],
"faqs": [],
}
)
client = TestClient(create_shopify_viewer_app(), raise_server_exceptions=False)
response = client.get("/api/products")
assert response.status_code == 200
payload = response.json()
assert payload["total"] == 1
assert payload["products"][0]["id"] == "product-1"
assert payload["products"][0]["price"] is None
def test_policies_and_cart_detail_api_serialize_strict_state_models() -> None:
shopify_state.state_from_json(
{
"products": {},
"carts": {
"cart-1": {
"id": "cart-1",
"totalQuantity": 0,
"note": "Viewer smoke cart",
}
},
"policies": [
{
"type": "REFUND_POLICY",
"title": "Refund Policy",
"body": "Returns accepted within 30 days.",
}
],
"faqs": [],
}
)
client = TestClient(create_shopify_viewer_app(), raise_server_exceptions=False)
policies_response = client.get("/api/policies")
assert policies_response.status_code == 200
assert policies_response.json()["policies"][0]["title"] == "Refund Policy"
cart_response = client.get("/api/carts/cart-1")
assert cart_response.status_code == 200
assert cart_response.json()["cart"]["note"] == "Viewer smoke cart"