fix CI FT regressions: deck contribution, ROLE SELECT no-deck guard, sig qualifiers, Carte Blanche multi-slot
- test_deck_contribution: get_or_create _equip_earthman + unlocked_decks.add; slot_number=2 on
_setup_in_use_deck seat; navigate to /gameboard/ (not gate — game-kit panel absent there);
drop #id_kit_card_deck click ({% empty %} placeholder; deck renders in loop when present);
use textContent for CSS-hidden tooltip; drop stale .deck-micro-status assertion (now mini-portal)
- ROLE SELECT FTs (RoleSelectTest + RoleSelectTrayTest): equip Earthman deck for active-slot
user in each test that opens the fan — fixes no-deck JS guard blocking #id_role_select
- test_room_sig_select: seed The Nomad/Schizo w. correct Earthman slugs/names + Enlightened/
Engraven qualifiers; grant super-nomad + super-schizo Notes to all gamers so Major Arcana
appear in overlay; seed Middle Arcana w. Elevated/Graven qualifiers; rename test methods
- test_game_kit: drop stale assertIn("active", text) — availability moved to In-Use mini-portal
- Carte Blanche: CB stays equipped after multi-slot deposit (revert drop_token unequip);
select_role existing-seat query gains order_by("slot_number") for deterministic primary seat;
multi-slot FT: kit bag shows placeholder after first deposit (CB unequipped); cold-feet
verifies DON via hover→portal; re-equip via portal DON before re-deposit; new
test_carte_in_use_game_kit_shows_room_attribution checks Game Kit tooltip after deposit
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:
@@ -8,6 +8,7 @@ from selenium.webdriver.common.by import By
|
||||
from .base import FunctionalTest, ChannelsFunctionalTest
|
||||
from .management.commands.create_session import create_pre_authenticated_session
|
||||
from apps.applets.models import Applet
|
||||
from apps.drama.models import Note
|
||||
from apps.epic.models import DeckVariant, Room, TableSeat, TarotCard
|
||||
from apps.lyric.models import User
|
||||
|
||||
@@ -43,17 +44,34 @@ def _assign_all_roles(room, role_order=None):
|
||||
deck_variant=earthman,
|
||||
slug=f"{_NAME[number].lower()}-of-{suit.lower()}-em",
|
||||
defaults={"arcana": "MIDDLE", "suit": suit, "number": number,
|
||||
"name": f"{_NAME[number]} of {suit.capitalize()}"},
|
||||
"name": f"{_NAME[number]} of {suit.capitalize()}",
|
||||
"levity_qualifier": "Elevated",
|
||||
"gravity_qualifier": "Graven"},
|
||||
)
|
||||
# Numbers 0–1 are the sig deck's Major Arcana (unlocked via Note).
|
||||
# Seed them with correct Earthman names and qualifiers, then unlock for all gamers.
|
||||
from django.utils import timezone
|
||||
for number, name, slug in [
|
||||
(0, "The Schiz", "the-schiz-em"),
|
||||
(1, "Pope 1: Chancellor", "pope-1-chancellor-em"),
|
||||
(0, "The Nomad", "the-nomad"),
|
||||
(1, "The Schizo", "the-schizo"),
|
||||
]:
|
||||
TarotCard.objects.get_or_create(
|
||||
deck_variant=earthman,
|
||||
slug=slug,
|
||||
defaults={"arcana": "MAJOR", "number": number, "name": name},
|
||||
defaults={"arcana": "MAJOR", "number": number, "name": name,
|
||||
"levity_qualifier": "Enlightened",
|
||||
"gravity_qualifier": "Engraven"},
|
||||
)
|
||||
for slot in room.gate_slots.order_by("slot_number"):
|
||||
if slot.gamer:
|
||||
Note.objects.get_or_create(
|
||||
user=slot.gamer, slug="super-nomad",
|
||||
defaults={"earned_at": timezone.now()},
|
||||
)
|
||||
Note.objects.get_or_create(
|
||||
user=slot.gamer, slug="super-schizo",
|
||||
defaults={"earned_at": timezone.now()},
|
||||
)
|
||||
for slot in room.gate_slots.order_by("slot_number"):
|
||||
if slot.gamer and not slot.gamer.equipped_deck:
|
||||
slot.gamer.equipped_deck = earthman
|
||||
@@ -304,8 +322,8 @@ class SigSelectThemeTest(FunctionalTest):
|
||||
|
||||
# ── ST1: Levity (Leavened) qualifier ──────────────────────────────────── #
|
||||
|
||||
def test_levity_non_major_card_shows_leavened_above(self):
|
||||
"""Hovering a non-major card in the levity overlay shows 'Leavened' in
|
||||
def test_levity_non_major_card_shows_elevated_above(self):
|
||||
"""Hovering a non-major card in the levity overlay shows 'Elevated' in
|
||||
qualifier-above and nothing in qualifier-below."""
|
||||
room = self._setup_sig_room()
|
||||
self.create_pre_authenticated_session("founder@test.io") # PC = levity
|
||||
@@ -317,12 +335,12 @@ class SigSelectThemeTest(FunctionalTest):
|
||||
above = self.wait_for(
|
||||
lambda: self.browser.find_element(By.CSS_SELECTOR, ".sig-qualifier-above")
|
||||
)
|
||||
self.assertEqual(above.text, "Leavened")
|
||||
self.assertEqual(above.text, "Elevated")
|
||||
below = self.browser.find_element(By.CSS_SELECTOR, ".sig-qualifier-below")
|
||||
self.assertEqual(below.text, "")
|
||||
|
||||
def test_levity_major_card_shows_leavened_below(self):
|
||||
"""Hovering a major arcana card in the levity overlay shows 'Leavened' in
|
||||
def test_levity_major_card_shows_enlightened_below(self):
|
||||
"""Hovering a major arcana card in the levity overlay shows 'Enlightened' in
|
||||
qualifier-below and nothing in qualifier-above."""
|
||||
room = self._setup_sig_room()
|
||||
self.create_pre_authenticated_session("founder@test.io") # PC = levity
|
||||
@@ -334,7 +352,7 @@ class SigSelectThemeTest(FunctionalTest):
|
||||
below = self.wait_for(
|
||||
lambda: self.browser.find_element(By.CSS_SELECTOR, ".sig-qualifier-below")
|
||||
)
|
||||
self.assertEqual(below.text, "Leavened")
|
||||
self.assertEqual(below.text, "Enlightened")
|
||||
above = self.browser.find_element(By.CSS_SELECTOR, ".sig-qualifier-above")
|
||||
self.assertEqual(above.text, "")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user