""" Tests for the coffee analytics dashboard. """ import pytest @pytest.mark.asyncio async def test_dashboard_requires_login(client): """Dashboard redirects unauthenticated users.""" response = await client.get("/dashboard/") assert response.status_code == 302 @pytest.mark.asyncio async def test_dashboard_loads(auth_client, mock_analytics): """Dashboard renders with chart data for authenticated user.""" response = await auth_client.get("/dashboard/") assert response.status_code == 200 body = (await response.get_data(as_text=True)) assert "Pulse" in body assert "Stock-to-Use Ratio" in body assert "KC=F Close" in body @pytest.mark.asyncio async def test_dashboard_shows_metric_cards(auth_client, mock_analytics): """Dashboard shows key metric values from latest data.""" response = await auth_client.get("/dashboard/") body = (await response.get_data(as_text=True)) assert "MM Net Position" in body assert "Certified Stocks" in body @pytest.mark.asyncio async def test_dashboard_yoy_table(auth_client, mock_analytics): """Dashboard renders YoY production change table.""" response = await auth_client.get("/dashboard/") body = (await response.get_data(as_text=True)) assert "Global Supply" in body @pytest.mark.asyncio async def test_dashboard_free_plan_limits_history(auth_client, mock_analytics): """Free plan should show limited history notice.""" response = await auth_client.get("/dashboard/") body = (await response.get_data(as_text=True)) assert "Upgrade" in body @pytest.mark.asyncio async def test_dashboard_free_plan_no_csv_export(auth_client, mock_analytics): """Free plan should not show CSV export button.""" response = await auth_client.get("/dashboard/") body = (await response.get_data(as_text=True)) assert "Upgrade" in body @pytest.mark.asyncio async def test_countries_page_loads(auth_client, mock_analytics): """Country comparison page loads.""" response = await auth_client.get("/dashboard/countries") assert response.status_code == 200 body = (await response.get_data(as_text=True)) assert "Country Comparison" in body @pytest.mark.asyncio async def test_countries_page_with_selection(auth_client, mock_analytics): """Country comparison with country params.""" response = await auth_client.get("/dashboard/countries?country=BR&country=VN&metric=production") assert response.status_code == 200