import pytest
from fastapi.testclient import TestClient
from app import app

client = TestClient(app)

@pytest.mark.parametrize("quantity", [1, 3, 20])
def test_valid_quote(quantity):
    response = client.post("/quote", json={"quantity": quantity})
    assert response.status_code == 200
    assert response.json() == {
        "quantity": quantity,
        "total_cents": quantity * 250,
    }

@pytest.mark.parametrize("payload", [
    {}, {"quantity": 0}, {"quantity": 21},
    {"quantity": "3"}, {"quantity": True},
    {"quantity": 1.5}, {"quantity": None},
    {"quantity": 3, "discount": 100},
])
def test_invalid_quote(payload):
    response = client.post("/quote", json=payload)
    assert response.status_code == 422
