Replace sidebar with compact header and shared friend dashboards

This commit is contained in:
Peter Stockings
2026-10-02 15:05:02 +10:00
parent ca2926da0a
commit 794e74166a
7 changed files with 103 additions and 28 deletions
+59
View File
@@ -805,3 +805,62 @@ def test_refresh_preserves_sharing_and_converts_running_units(app):
assert result.samples[0]["vertical_oscillation"] == 8.5
assert result.samples[0]["ground_contact"] == 250
assert result.samples[0]["power"] == 300
def test_friend_dashboard_records_and_totals_exclude_private_runs(app):
from flask import template_rendered
with app.app_context():
private = db.session.get(Activity, 1)
private.samples = [{"distance": 0, "time": 0}, {"distance": 5000, "time": 1000}]
persist_efforts(private)
shared = Activity(
owner_id=1,
source_key="shared-record",
title="Shared slower run",
sport="running",
visibility="friends",
has_route=True,
started_at=datetime(2026, 10, 1, tzinfo=UTC),
distance_m=5000,
duration_s=1500,
elevation_m=20,
samples=[{"distance": 0, "time": 0}, {"distance": 5000, "time": 1500}],
)
persist_efforts(shared)
shared.has_route = True
db.session.add(shared)
db.session.add(Friendship(low_id=1, high_id=2, requested_by=1, status="accepted"))
db.session.commit()
contexts = []
def capture(_app, template, context, **_extra):
contexts.append(context)
template_rendered.connect(capture, app)
client = app.test_client()
login(client, "other")
try:
response = client.get("/u/runner")
assert response.status_code == 200
context = contexts[-1]
assert context["stats"]["count"] == 1
assert context["stats"]["distance"] == 5
assert context["stats"]["duration"] == 1500
assert context["mapped_run"].title == "Shared slower run"
assert all(
record["activity"].title == "Shared slower run"
for record in context["record_book"]["records"]
)
assert context["record_book"]["records"][-1]["seconds"] == 1500
assert b"A quiet morning run" not in response.data
assert b"header-import" not in response.data
assert b"Shared profile" not in response.data
assert b'<aside class="sidebar"' not in response.data
assert b"Friends \xc2\xb7 Shared runs" in response.data
assert client.post("/activities/2/edit", data={"title": "changed"}).status_code == 404
finally:
template_rendered.disconnect(capture, app)
owner = app.test_client()
login(owner)
assert owner.get("/u/runner").location.endswith("/dashboard")