feat(server): schema v2契约——session_resume白名单/Event归属与区间字段/会话resume_of/request_id
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,16 @@ from tracker.models import Site, Visitor, VisitSession, Event
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def _base_event_kwargs():
|
||||
"""合法 Event 基线 kwargs(schema v2 测试用)"""
|
||||
site = Site.objects.create(name="s", domains=["a.com"])
|
||||
visitor = Visitor.objects.create(site=site, visitor_id="vid1")
|
||||
session = VisitSession.objects.create(site=site, visitor=visitor, session_id="sid1",
|
||||
started_at="2026-09-15T10:00:00Z", ended_at="2026-09-15T10:01:00Z")
|
||||
return dict(site=site, visitor=visitor, session=session, event_id="e1",
|
||||
event_name="page_stay", occurred_at="2026-09-15T10:00:30Z", path="/")
|
||||
|
||||
def test_create_site_generates_public_site_id():
|
||||
site = Site.objects.create(name="官网", domains=["www.example.com"])
|
||||
assert site.site_id.startswith("site_") and len(site.site_id) == 21
|
||||
@@ -36,3 +46,14 @@ def test_site_cascade_deletes_children():
|
||||
event_name="page_view", occurred_at="2026-09-15T10:00:00Z", path="/")
|
||||
site.delete()
|
||||
assert Visitor.objects.count() == 0 and VisitSession.objects.count() == 0 and Event.objects.count() == 0
|
||||
|
||||
|
||||
def test_event_has_phase_a_fields():
|
||||
e = Event(**_base_event_kwargs(), page_id="p1", active_from_ms=0,
|
||||
active_to_ms=15000, flush_reason="periodic",
|
||||
time_quality="ok", sdk_version="0.2.0", schema_version=2)
|
||||
e.full_clean()
|
||||
|
||||
|
||||
def test_visit_session_resume_of_self_fk():
|
||||
assert VisitSession._meta.get_field("resume_of").related_model is VisitSession
|
||||
|
||||
Reference in New Issue
Block a user