deck contribution sprint 1: TableSeat.deck_variant FK + select_role wiring — TDD

- epic.TableSeat gains deck_variant FK → DeckVariant (nullable, SET_NULL)
- select_role view assigns request.user.equipped_deck to seat on role confirmation
- Migration 0006_add_deck_variant_to_tableseat
- ITs: test_select_role_assigns_equipped_deck_to_seat,
       test_select_role_no_deck_leaves_deck_variant_null

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-04-27 22:38:07 -04:00
parent 42be0c63dc
commit 94a864b05b
4 changed files with 45 additions and 0 deletions

View File

@@ -680,6 +680,27 @@ class SelectRoleViewTest(TestCase):
)
mock_notify.assert_called_once_with(self.room.id)
def test_select_role_assigns_equipped_deck_to_seat(self):
earthman = DeckVariant.objects.get(slug="earthman")
self.founder.equipped_deck = earthman
self.founder.save(update_fields=["equipped_deck"])
self.client.post(
reverse("epic:select_role", kwargs={"room_id": self.room.id}),
data={"role": "PC"},
)
seat = TableSeat.objects.get(room=self.room, slot_number=1)
self.assertEqual(seat.deck_variant, earthman)
def test_select_role_no_deck_leaves_deck_variant_null(self):
self.founder.equipped_deck = None
self.founder.save(update_fields=["equipped_deck"])
self.client.post(
reverse("epic:select_role", kwargs={"room_id": self.room.id}),
data={"role": "PC"},
)
seat = TableSeat.objects.get(room=self.room, slot_number=1)
self.assertIsNone(seat.deck_variant)
def test_select_role_requires_login(self):
self.client.logout()
response = self.client.post(