deck contribution sprint 2 + Carte Blanche safeguards — TDD

Sprint 2 UI (game kit applet):
- _applet-game-kit.html: in-use deck → two disabled × buttons, .tt-deck-game-name;
  in-use Carte Blanche → two disabled × buttons, data-current-room-name,
  .tt-token-room-name; tooltip content mirrors kit bag panel (Default, card count,
  description, Stock version)
- gameboard.js buildMiniContent: 'In-Use' for tokens w. data-current-room-name set
- _kit_bag_panel.html: Deck section always renders (placeholder when unequipped)

View safeguards:
- select_role: look up existing deck from prior seat in same room before
  equipped_deck (Carte Blanche multi-seat); only unequip when using equipped_deck
- drop_token Carte: reject 409 if token.current_room is a different room;
  unequip from equipped_trinket on drop

ITs: SelectRoleMultiSeatTest (2), DropTokenViewTest +3 (carte drop, unequip, lock)

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 23:24:43 -04:00
parent 94a864b05b
commit fa68c74b51
8 changed files with 196 additions and 22 deletions

View File

@@ -96,7 +96,7 @@ class DeckContributionTest(FunctionalTest):
))
# Navigate to Game Kit → Card Decks to verify UI state
self.browser.get(self.live_server_url + "/gameboard/game-kit/")
self.browser.get(self.live_server_url + "/gameboard/")
decks_btn = self.wait_for(
lambda: self.browser.find_element(By.CSS_SELECTOR, "#id_kit_card_deck")
)
@@ -152,7 +152,7 @@ class DeckInUseGameKitTest(FunctionalTest):
session_key = self.create_pre_authenticated_session(GAMER_EMAIL)
self.browser.get(self.live_server_url)
self.browser.add_cookie({"name": "sessionid", "value": session_key})
self.browser.get(self.live_server_url + "/gameboard/game-kit/")
self.browser.get(self.live_server_url + "/gameboard/")
self.wait_for(
lambda: self.browser.find_element(By.CSS_SELECTOR, "#id_kit_card_deck")
).click()
@@ -180,7 +180,7 @@ class DeckInUseGameKitTest(FunctionalTest):
session_key = self.create_pre_authenticated_session(GAMER_EMAIL)
self.browser.get(self.live_server_url)
self.browser.add_cookie({"name": "sessionid", "value": session_key})
self.browser.get(self.live_server_url + "/gameboard/game-kit/")
self.browser.get(self.live_server_url + "/gameboard/")
self.wait_for(
lambda: self.browser.find_element(By.CSS_SELECTOR, "#id_kit_card_deck")
).click()
@@ -201,7 +201,7 @@ class DeckInUseGameKitTest(FunctionalTest):
session_key = self.create_pre_authenticated_session(GAMER_EMAIL)
self.browser.get(self.live_server_url)
self.browser.add_cookie({"name": "sessionid", "value": session_key})
self.browser.get(self.live_server_url + "/gameboard/game-kit/")
self.browser.get(self.live_server_url + "/gameboard/")
self.wait_for(
lambda: self.browser.find_element(By.CSS_SELECTOR, "#id_kit_card_deck")
).click()