navbar: GATE VIEW swaps for CONT GAME on room pages (page-room) → room gate-view — TDD
Phase 0 of the room GATE VIEW + seat-renewal sprint. Mirrors the my-sea treatment: on any room page the self-referential CONT GAME is replaced by a GATE VIEW button that opens the room's renewal gate-view. - `room_view` page_class → "page-gameboard page-room"; the bare gameboard listing stays "page-gameboard" (no page-room) so CONT GAME persists there for returning to a recent room. - `_navbar.html` GATE VIEW branch fires on `page-my-sea` OR `page-room`; onclick routes, in precedence: page-room → epic:room_gate (room in context); my-sea-visit → visitor gate; else owner's sea gate. One consolidated branch (DRY) instead of two near-identical button blocks. Tests: RoomNavbarGateViewTest (4) — room page shows GATE VIEW not CONT GAME, links to room_gate, gate-view page also shows it, page-room marker present. 826 epic+gameboard ITs green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2730,3 +2730,35 @@ class RoomRenewTokenTest(TestCase):
|
||||
def test_renew_get_redirects(self):
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
|
||||
class RoomNavbarGateViewTest(TestCase):
|
||||
"""Navbar swaps CONT GAME → GATE VIEW on room pages (mirror my-sea),
|
||||
routing to the room gate-view. The gameboard listing keeps CONT GAME
|
||||
(no `page-room` marker)."""
|
||||
|
||||
def setUp(self):
|
||||
self.owner = User.objects.create(email="owner@test.io", username="owner")
|
||||
self.room = Room.objects.create(
|
||||
name="Nav Room", owner=self.owner,
|
||||
gate_status=Room.OPEN, table_status=Room.ROLE_SELECT,
|
||||
)
|
||||
self.client.force_login(self.owner)
|
||||
|
||||
def test_room_page_shows_gate_view_not_cont_game(self):
|
||||
response = self.client.get(reverse("epic:room", args=[self.room.id]))
|
||||
self.assertContains(response, "id_navbar_gate_view_btn")
|
||||
self.assertNotContains(response, 'id="id_cont_game"')
|
||||
|
||||
def test_gate_view_btn_links_to_room_gate(self):
|
||||
response = self.client.get(reverse("epic:room", args=[self.room.id]))
|
||||
self.assertContains(
|
||||
response, reverse("epic:room_gate", args=[self.room.id]))
|
||||
|
||||
def test_room_gate_page_also_shows_gate_view(self):
|
||||
response = self.client.get(reverse("epic:room_gate", args=[self.room.id]))
|
||||
self.assertContains(response, "id_navbar_gate_view_btn")
|
||||
|
||||
def test_room_page_carries_page_room_marker(self):
|
||||
response = self.client.get(reverse("epic:room", args=[self.room.id]))
|
||||
self.assertIn("page-room", response.context["page_class"])
|
||||
|
||||
Reference in New Issue
Block a user