from test_products_inventory import headers, workspace

pytest_plugins = ("test_workspace",)

REPORT_ENDPOINTS = [
    "summary",
    "profit-loss",
    "sales",
    "sales-products",
    "sales-staff",
    "sales-branches",
    "purchases",
    "receivables",
    "payables",
    "expenses",
    "other-income",
    "payroll",
    "inventory-value",
    "stock-history",
]


def test_all_report_endpoints_are_available(client, verified_user):
    data = workspace(client, verified_user, "Reports Smoke")
    business_id = data["business"]["id"]

    for endpoint in REPORT_ENDPOINTS:
        response = client.get(
            f"/api/businesses/{business_id}/reports/{endpoint}",
            headers=headers(verified_user),
        )
        assert response.status_code == 200, (
            endpoint,
            response.status_code,
            response.text,
        )


def test_report_invalid_date_range_is_rejected(client, verified_user):
    data = workspace(client, verified_user, "Reports Dates")
    business_id = data["business"]["id"]

    response = client.get(
        f"/api/businesses/{business_id}/reports/summary"
        "?start_date=2026-09-24&end_date=2026-09-01",
        headers=headers(verified_user),
    )

    assert response.status_code == 422
