diff --git a/src/functional_tests/test_room_sig_select.py b/src/functional_tests/test_room_sig_select.py index 02fb7c3..629b2d6 100644 --- a/src/functional_tests/test_room_sig_select.py +++ b/src/functional_tests/test_room_sig_select.py @@ -16,18 +16,9 @@ from .test_room_role_select import _fill_room_via_orm # ── Significator Selection ──────────────────────────────────────────────────── # -# After all 6 roles are revealed the room enters SIG_SELECT. A 36-card -# Significator deck appears at the table centre; gamers pick in seat order -# (PC → NC → EC → SC → AC → BC). Selected cards are removed from the shared -# pile in real time via WebSocket, exactly as role selection works. -# -# Deck composition (18 unique cards × 2 — one from levity, one from gravity): -# SC / AC (Shepherd / Alchemist) → M/J/Q/K of Swords & Cups (16 cards) -# PC / BC (Player / Builder) → M/J/Q/K of Wands & Pentacles (16 cards) -# NC / EC (Narrator / Economist) → The Schiz (0) + Chancellor (1) ( 4 cards) -# -# Levity pile: SC, PC, NC contributions. Gravity pile: AC, BC, EC contributions. -# Cards retain the contributor's deck card-back — up to 6 distinct backs active. +# After all 6 roles are revealed the room enters SIG_SELECT. Two parallel +# 18-card overlays appear (levity: PC/NC/SC; gravity: BC/EC/AC). Each polarity +# group picks simultaneously — no sequential turn order. # # ───────────────────────────────────────────────────────────────────────────── @@ -92,34 +83,7 @@ class SigSelectTest(FunctionalTest): ) # ------------------------------------------------------------------ # - # Test S1 — Significator deck of 36 cards appears at table centre # - # ------------------------------------------------------------------ # - - def test_sig_deck_appears_with_36_cards_after_all_roles_revealed(self): - founder, _ = User.objects.get_or_create(email="founder@test.io") - room = Room.objects.create(name="Sig Deck Test", owner=founder) - _fill_room_via_orm(room, [ - "founder@test.io", "amigo@test.io", "bud@test.io", - "pal@test.io", "dude@test.io", "bro@test.io", - ]) - _assign_all_roles(room) - - self.create_pre_authenticated_session("founder@test.io") - room_url = f"{self.live_server_url}/gameboard/room/{room.id}/gate/" - self.browser.get(room_url) - - # Significator deck is visible at the table centre - sig_deck = self.wait_for( - lambda: self.browser.find_element(By.ID, "id_sig_deck") - ) - self.assertTrue(sig_deck.is_displayed()) - - # It contains exactly 36 cards - cards = self.browser.find_elements(By.CSS_SELECTOR, "#id_sig_deck .sig-card") - self.assertEqual(len(cards), 36) - - # ------------------------------------------------------------------ # - # Test S2 — Seats reorder to canonical role sequence at SIG_SELECT # + # Test S1 — Seats reorder to canonical role sequence at SIG_SELECT # # ------------------------------------------------------------------ # def test_seats_display_in_pc_nc_ec_sc_ac_bc_order_after_reveal(self): @@ -145,84 +109,6 @@ class SigSelectTest(FunctionalTest): roles_in_order = [s.get_attribute("data-role") for s in seats] self.assertEqual(roles_in_order, SIG_SEAT_ORDER) - # ------------------------------------------------------------------ # - # Test S3 — First seat (PC) can select a significator; deck shrinks # - # ------------------------------------------------------------------ # - - def test_first_seat_pc_can_select_significator_and_deck_shrinks(self): - founder, _ = User.objects.get_or_create(email="founder@test.io") - room = Room.objects.create(name="PC Select Test", owner=founder) - # Founder is assigned PC (slot 1 → first in canonical order → active) - _fill_room_via_orm(room, [ - "founder@test.io", "amigo@test.io", "bud@test.io", - "pal@test.io", "dude@test.io", "bro@test.io", - ]) - _assign_all_roles(room, role_order=["PC", "NC", "EC", "SC", "AC", "BC"]) - - self.create_pre_authenticated_session("founder@test.io") - room_url = f"{self.live_server_url}/gameboard/room/{room.id}/gate/" - self.browser.get(room_url) - - # 36-card sig deck is present and the founder's seat is active - self.wait_for( - lambda: self.browser.find_element(By.CSS_SELECTOR, "#id_sig_deck .sig-card") - ) - self.wait_for( - lambda: self.browser.find_element( - By.CSS_SELECTOR, ".table-seat.active[data-role='PC']" - ) - ) - - # Click the first card in the significator deck to select it - first_card = self.browser.find_element( - By.CSS_SELECTOR, "#id_sig_deck .sig-card" - ) - first_card.click() - self.confirm_guard() - - # Deck now has 35 cards — one pile copy of the selected card removed - self.wait_for( - lambda: self.assertEqual( - len(self.browser.find_elements(By.CSS_SELECTOR, "#id_sig_deck .sig-card")), - 35, - ) - ) - - # Active seat advances to NC - self.wait_for( - lambda: self.browser.find_element( - By.CSS_SELECTOR, ".table-seat.active[data-role='NC']" - ) - ) - - # ------------------------------------------------------------------ # - # Test S4 — Ineligible seat cannot interact with sig deck # - # ------------------------------------------------------------------ # - - def test_non_active_seat_cannot_select_significator(self): - founder, _ = User.objects.get_or_create(email="founder@test.io") - room = Room.objects.create(name="Ineligible Sig Test", owner=founder) - # Founder is NC (second in canonical order) — not first - _fill_room_via_orm(room, [ - "founder@test.io", "amigo@test.io", "bud@test.io", - "pal@test.io", "dude@test.io", "bro@test.io", - ]) - _assign_all_roles(room, role_order=["NC", "PC", "EC", "SC", "AC", "BC"]) - - self.create_pre_authenticated_session("founder@test.io") - room_url = f"{self.live_server_url}/gameboard/room/{room.id}/gate/" - self.browser.get(room_url) - - self.wait_for(lambda: self.browser.find_element(By.ID, "id_sig_deck")) - - # Click a sig card — it must not trigger a selection (deck stays at 36) - self.browser.find_element(By.CSS_SELECTOR, "#id_sig_deck .sig-card").click() - self.wait_for( - lambda: self.assertEqual( - len(self.browser.find_elements(By.CSS_SELECTOR, "#id_sig_deck .sig-card")), - 36, - ) - ) @tag("channels")