backend: initial commit

This commit is contained in:
Davide Scaini
2026-03-28 13:57:12 +01:00
commit 38c5423aeb
36 changed files with 2463 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
from bincio.extract.writer import make_activity_id, _slugify
from bincio.extract.models import ParsedActivity, DataPoint
from datetime import datetime, timezone
def _dummy_activity(title=None):
ts = datetime(2024, 6, 1, 7, 30, 12, tzinfo=timezone.utc)
return ParsedActivity(
points=[DataPoint(timestamp=ts)],
sport="cycling",
started_at=ts,
source_file="test.fit",
source_hash="sha256:abc",
title=title,
)
def test_id_with_title():
act = _dummy_activity("Morning Ride")
aid = make_activity_id(act)
assert aid.startswith("2024-06-01T")
assert "morning-ride" in aid
def test_id_without_title():
act = _dummy_activity()
aid = make_activity_id(act)
assert "2024-06-01T" in aid
# No trailing dash
assert not aid.endswith("-")
def test_slugify():
assert _slugify("Morning Ride!") == "morning-ride"
assert _slugify(" Vélo ") == "velo" # é → e via NFKD + ASCII
assert _slugify("") == ""