v1
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
import pytest
|
||||
|
||||
from app.models.analytics import AnalyticsEvent
|
||||
from tests.conftest import TestSessionLocal
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_analytics_summary_includes_top_journeys(client, admin_token):
|
||||
now = datetime.now(timezone.utc)
|
||||
|
||||
async with TestSessionLocal() as session:
|
||||
session.add_all([
|
||||
AnalyticsEvent(
|
||||
event_type="page_view",
|
||||
page="/",
|
||||
element=None,
|
||||
metadata_={},
|
||||
session_id="session-1",
|
||||
created_at=now - timedelta(minutes=5),
|
||||
),
|
||||
AnalyticsEvent(
|
||||
event_type="page_view",
|
||||
page="/pack-walks",
|
||||
element=None,
|
||||
metadata_={},
|
||||
session_id="session-1",
|
||||
created_at=now - timedelta(minutes=4),
|
||||
),
|
||||
AnalyticsEvent(
|
||||
event_type="page_view",
|
||||
page="/contact",
|
||||
element=None,
|
||||
metadata_={},
|
||||
session_id="session-1",
|
||||
created_at=now - timedelta(minutes=3),
|
||||
),
|
||||
AnalyticsEvent(
|
||||
event_type="page_view",
|
||||
page="/",
|
||||
element=None,
|
||||
metadata_={},
|
||||
session_id="session-2",
|
||||
created_at=now - timedelta(minutes=2),
|
||||
),
|
||||
AnalyticsEvent(
|
||||
event_type="page_view",
|
||||
page="/pack-walks",
|
||||
element=None,
|
||||
metadata_={},
|
||||
session_id="session-2",
|
||||
created_at=now - timedelta(minutes=1),
|
||||
),
|
||||
AnalyticsEvent(
|
||||
event_type="page_view",
|
||||
page="/pack-walks",
|
||||
element=None,
|
||||
metadata_={},
|
||||
session_id="session-2",
|
||||
created_at=now,
|
||||
),
|
||||
])
|
||||
await session.commit()
|
||||
|
||||
response = await client.get(
|
||||
"/api/v1/analytics/summary",
|
||||
headers={"Authorization": f"Bearer {admin_token}"},
|
||||
)
|
||||
|
||||
assert response.status_code == 200, response.text
|
||||
body = response.json()
|
||||
|
||||
assert "top_journeys" in body
|
||||
assert body["top_journeys"][0] == {"label": "/ -> /pack-walks", "count": 2}
|
||||
assert all(item["label"] != "/pack-walks -> /pack-walks" for item in body["top_journeys"])
|
||||
Reference in New Issue
Block a user