feat(session): in-place row swap for finish/reset with OOB navbar

Delete stale _session_row_fragment; end_session and reset_session_start
return the canonical row plus an OOB navbar-playtime fragment. Clone keeps
HX-Refresh since it changes row count. Fixes #53.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 21:27:03 +02:00
parent 7d10884db7
commit 4a3e40ef29
3 changed files with 96 additions and 91 deletions
+6 -2
View File
@@ -267,7 +267,7 @@ class RenderedPagesTest(TestCase):
def test_reset_session_start_to_now_via_htmx(self):
# The inline "reset start" endpoint sets timestamp_start to now and
# asks htmx to refresh the list (the table is rebuilt server-side).
# returns an in-place row swap plus an OOB navbar update.
running = Session.objects.create(
game=self.game,
timestamp_start=datetime(2020, 1, 1, 10, 0, tzinfo=ZONEINFO),
@@ -277,7 +277,11 @@ class RenderedPagesTest(TestCase):
reverse("games:list_sessions_reset_session_start", args=[running.id]),
HTTP_HX_REQUEST="true",
)
self.assertEqual(resp["HX-Refresh"], "true")
self.assertEqual(resp.status_code, 200)
body = resp.content.decode()
self.assertIn(f'id="session-row-{running.id}"', body)
self.assertIn('id="navbar-playtime"', body)
self.assertNotIn("HX-Refresh", resp.headers)
running.refresh_from_db()
self.assertGreaterEqual(running.timestamp_start, before)