q275343119's picture
feat - Optimization
a5cef14
Raw
History Blame
1.16 kB
from datetime import UTC, datetime
from leaderboard_analytics.schemas import QueryFilters
from leaderboard_analytics.services import AnalyticsService
class FakeRepository:
def overview_timeseries(self, filters: QueryFilters) -> list[dict]:
return [
{"period": "2026-01-01", "pv": 2, "uv": 1, "session_count": 1, "event_count": 3},
{"period": "2026-01-02", "pv": 1, "uv": 1, "session_count": 1, "event_count": 2},
]
def overview_totals(self, filters: QueryFilters) -> dict:
return {"pv": 3, "uv": 1, "sessions": 1, "events": 5}
def test_overview_uses_full_range_distinct_totals() -> None:
service = AnalyticsService(FakeRepository()) # type: ignore[arg-type]
filters = QueryFilters(
start_time=datetime(2026, 1, 1, tzinfo=UTC),
end_time=datetime(2026, 1, 2, tzinfo=UTC),
)
frame, totals = service.get_overview(filters)
assert list(frame["period"]) == ["2026-01-01", "2026-01-02"]
assert totals == {
"pv": 3,
"uv": 1,
"sessions": 1,
"events": 5,
"events_per_session": 5.0,
"sessions_per_visitor": 1.0,
}