SIG SELECT: Nomad/Schizo locked by default; Note-unlock gate — TDD
- _filter_major_unlocks(cards, user): strips Major 0 (Nomad) and Major 1 (Schizo) unless user has matching 'nomad'/'schizo' Note; unauthenticated users see 0 majors - levity_sig_cards(room, user) / gravity_sig_cards(room, user): accept user param; default 16 court cards, up to 18 with both Note unlocks - View wires user into both calls; _sig_unique_cards / sig_deck_cards unchanged (game-table deck still includes all 18 unique) - _full_sig_setUp: seats now carry deck_variant=earthman - SigCardHelperTest: 4 new ITs (default 16, nomad +1, schizo +1); empty-deck test updated to clear seats + owner - SigSelectRenderingTest: 18-card test updated to 16-default + 3 Note-unlock ITs Pending: superusers auto-granted nomad + schizo Notes on creation (ask user) 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:
@@ -5,7 +5,7 @@ from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.drama.models import GameEvent
|
||||
from apps.drama.models import GameEvent, Note
|
||||
from apps.lyric.models import Token, User
|
||||
from apps.epic.models import (
|
||||
Character, DeckVariant, GateSlot, Room, RoomInvite, SigReservation, TableSeat, TarotCard,
|
||||
@@ -1032,7 +1032,8 @@ def _full_sig_setUp(test_case, role_order=None):
|
||||
slot.status = GateSlot.FILLED
|
||||
slot.save()
|
||||
TableSeat.objects.create(
|
||||
room=room, gamer=gamer, slot_number=i, role=role, role_revealed=True,
|
||||
room=room, gamer=gamer, slot_number=i, role=role,
|
||||
role_revealed=True, deck_variant=earthman,
|
||||
)
|
||||
room.gate_status = Room.OPEN
|
||||
room.table_status = Room.SIG_SELECT
|
||||
@@ -1055,7 +1056,24 @@ class SigSelectRenderingTest(TestCase):
|
||||
response = self.client.get(self.url)
|
||||
self.assertContains(response, "id_sig_deck")
|
||||
|
||||
def test_sig_deck_contains_18_sig_cards(self):
|
||||
def test_sig_deck_contains_16_sig_cards_by_default(self):
|
||||
"""Without Note unlocks the deck shows only 16 court cards (no Nomad/Schizo)."""
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.content.decode().count('data-card-id='), 16)
|
||||
|
||||
def test_nomad_note_adds_nomad_to_sig_deck(self):
|
||||
Note.objects.create(user=self.gamers[0], slug="nomad", earned_at=timezone.now())
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.content.decode().count('data-card-id='), 17)
|
||||
|
||||
def test_schizo_note_adds_schizo_to_sig_deck(self):
|
||||
Note.objects.create(user=self.gamers[0], slug="schizo", earned_at=timezone.now())
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.content.decode().count('data-card-id='), 17)
|
||||
|
||||
def test_both_notes_gives_18_sig_cards(self):
|
||||
Note.objects.create(user=self.gamers[0], slug="nomad", earned_at=timezone.now())
|
||||
Note.objects.create(user=self.gamers[0], slug="schizo", earned_at=timezone.now())
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.content.decode().count('data-card-id='), 18)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user