added PICK SKY ready gate: SigReservation.ready + countdown_remaining fields, Room.SKY_SELECT status + sig_select_started_at, sig_ready + sig_confirm views, WS notifiers for countdown_start/cancel/polarity_room_done/pick_sky_available, migration 0031, PICK SKY btn in hex center at SKY_SELECT, tray cell 2 sig card placeholder; FTs SRG1-8 written (pending JS/consumer)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -530,3 +530,66 @@ class TarotCardCautionsTest(TestCase):
|
||||
for caution in schizo.cautions:
|
||||
self.assertIn("reverse", caution)
|
||||
self.assertNotIn("transform", caution)
|
||||
|
||||
|
||||
# ── SigReservation ready gate ─────────────────────────────────────────────────
|
||||
|
||||
class SigReservationReadyGateTest(TestCase):
|
||||
"""SigReservation.ready and countdown_remaining fields."""
|
||||
|
||||
def setUp(self):
|
||||
self.earthman = DeckVariant.objects.get(slug="earthman")
|
||||
owner = User.objects.create(email="owner@test.io")
|
||||
room = Room.objects.create(name="R", owner=owner)
|
||||
card = TarotCard.objects.get(
|
||||
deck_variant=self.earthman, arcana="MIDDLE", suit="BRANDS", number=11
|
||||
)
|
||||
self.res = SigReservation.objects.create(
|
||||
room=room, gamer=owner, card=card, role="PC", polarity="levity"
|
||||
)
|
||||
|
||||
def test_ready_defaults_to_false(self):
|
||||
self.assertFalse(self.res.ready)
|
||||
|
||||
def test_countdown_remaining_defaults_to_none(self):
|
||||
self.assertIsNone(self.res.countdown_remaining)
|
||||
|
||||
def test_ready_can_be_set_true(self):
|
||||
self.res.ready = True
|
||||
self.res.save()
|
||||
self.res.refresh_from_db()
|
||||
self.assertTrue(self.res.ready)
|
||||
|
||||
def test_countdown_remaining_can_be_saved(self):
|
||||
self.res.countdown_remaining = 7
|
||||
self.res.save()
|
||||
self.res.refresh_from_db()
|
||||
self.assertEqual(self.res.countdown_remaining, 7)
|
||||
|
||||
|
||||
# ── Room SKY_SELECT status ────────────────────────────────────────────────────
|
||||
|
||||
class RoomSkySelectStatusTest(TestCase):
|
||||
"""Room.SKY_SELECT constant and sig_select_started_at field."""
|
||||
|
||||
def setUp(self):
|
||||
owner = User.objects.create(email="owner@test.io")
|
||||
self.room = Room.objects.create(name="R", owner=owner)
|
||||
|
||||
def test_sky_select_constant_value(self):
|
||||
self.assertEqual(Room.SKY_SELECT, "SKY_SELECT")
|
||||
|
||||
def test_sky_select_is_valid_table_status_choice(self):
|
||||
choices = [c[0] for c in Room.TABLE_STATUS_CHOICES]
|
||||
self.assertIn(Room.SKY_SELECT, choices)
|
||||
|
||||
def test_sig_select_started_at_defaults_to_none(self):
|
||||
self.assertIsNone(self.room.sig_select_started_at)
|
||||
|
||||
def test_sig_select_started_at_can_be_set(self):
|
||||
from django.utils import timezone
|
||||
now = timezone.now()
|
||||
self.room.sig_select_started_at = now
|
||||
self.room.save()
|
||||
self.room.refresh_from_db()
|
||||
self.assertIsNotNone(self.room.sig_select_started_at)
|
||||
|
||||
Reference in New Issue
Block a user