mirror of
http://88.130.71.182:3000/BlitTech/badoHair_be.git
synced 2026-06-12 23:23:22 +00:00
Initial Commit
This commit is contained in:
57
tests/test_admin_dashboard.py
Normal file
57
tests/test_admin_dashboard.py
Normal file
@@ -0,0 +1,57 @@
|
||||
"""Admin dashboard stats — verify all fields the frontend needs are present."""
|
||||
from unittest.mock import AsyncMock
|
||||
|
||||
|
||||
async def test_overview_returns_all_frontend_fields(admin_client, mock_db):
|
||||
mock_db.fetchval = AsyncMock(return_value=0)
|
||||
|
||||
r = await admin_client.get("/api/v1/admin/stats/overview")
|
||||
assert r.status_code == 200
|
||||
data = r.json()["data"]
|
||||
|
||||
# Revenue (extra, for future admin analytics)
|
||||
assert "revenue_today" in data
|
||||
assert "revenue_week" in data
|
||||
assert "revenue_month" in data
|
||||
|
||||
# Fields the frontend dashboard currently displays
|
||||
assert "products_count" in data
|
||||
assert "bookings_pending" in data
|
||||
assert "bookings_confirmed" in data
|
||||
assert "catalog_value" in data
|
||||
|
||||
# Bonus fields
|
||||
assert "low_stock_count" in data
|
||||
assert "new_customers_month" in data
|
||||
|
||||
|
||||
async def test_overview_requires_admin(auth_client, mock_db):
|
||||
mock_db.fetchval = AsyncMock(return_value=0)
|
||||
r = await auth_client.get("/api/v1/admin/stats/overview")
|
||||
assert r.status_code == 403
|
||||
|
||||
|
||||
async def test_overview_requires_auth(anon_client):
|
||||
r = await anon_client.get("/api/v1/admin/stats/overview")
|
||||
assert r.status_code == 401
|
||||
|
||||
|
||||
async def test_revenue_stats(admin_client, mock_db):
|
||||
mock_db.fetch = AsyncMock(return_value=[])
|
||||
r = await admin_client.get("/api/v1/admin/stats/revenue?period=month")
|
||||
assert r.status_code == 200
|
||||
data = r.json()["data"]
|
||||
assert "orders" in data
|
||||
assert "bookings" in data
|
||||
|
||||
|
||||
async def test_revenue_invalid_period(admin_client):
|
||||
r = await admin_client.get("/api/v1/admin/stats/revenue?period=decade")
|
||||
assert r.status_code == 422
|
||||
|
||||
|
||||
async def test_activity_feed(admin_client, mock_db):
|
||||
mock_db.fetch = AsyncMock(return_value=[])
|
||||
r = await admin_client.get("/api/v1/admin/stats/activity")
|
||||
assert r.status_code == 200
|
||||
assert isinstance(r.json()["data"], list)
|
||||
Reference in New Issue
Block a user