import pytest from conftest import auth_header class TestEnergyHistory: async def test_get_energy_history(self, client, admin_user, admin_token, seed_energy_data): resp = await client.get( "/api/v1/energy/history", params={"granularity": "raw"}, headers=auth_header(admin_token), ) assert resp.status_code == 200 body = resp.json() assert isinstance(body, list) async def test_get_energy_history_by_device(self, client, admin_user, admin_token, seed_energy_data, seed_devices): resp = await client.get( "/api/v1/energy/history", params={"device_id": seed_devices[0].id, "granularity": "raw"}, headers=auth_header(admin_token), ) assert resp.status_code == 200 async def test_get_energy_history_unauthenticated(self, client): resp = await client.get("/api/v1/energy/history") assert resp.status_code == 401 class TestDailySummary: async def test_get_daily_summary(self, client, admin_user, admin_token, seed_daily_summary): resp = await client.get("/api/v1/energy/daily-summary", headers=auth_header(admin_token)) assert resp.status_code == 200 body = resp.json() assert isinstance(body, list) async def test_get_daily_summary_with_filter(self, client, admin_user, admin_token, seed_daily_summary): resp = await client.get( "/api/v1/energy/daily-summary", params={"energy_type": "electricity"}, headers=auth_header(admin_token), ) assert resp.status_code == 200 class TestEnergyComparison: async def test_get_energy_comparison(self, client, admin_user, admin_token, seed_daily_summary): resp = await client.get( "/api/v1/energy/comparison", params={"period": "month"}, headers=auth_header(admin_token), ) assert resp.status_code == 200 body = resp.json() assert "current" in body assert "previous" in body assert "yoy" in body assert "mom_change" in body assert "yoy_change" in body async def test_get_energy_comparison_day(self, client, admin_user, admin_token, seed_daily_summary): resp = await client.get( "/api/v1/energy/comparison", params={"period": "day"}, headers=auth_header(admin_token), ) assert resp.status_code == 200 async def test_get_energy_comparison_year(self, client, admin_user, admin_token, seed_daily_summary): resp = await client.get( "/api/v1/energy/comparison", params={"period": "year"}, headers=auth_header(admin_token), ) assert resp.status_code == 200