diff --git a/src/apps/epic/tests/integrated/test_views.py b/src/apps/epic/tests/integrated/test_views.py index f25be86..b476eca 100644 --- a/src/apps/epic/tests/integrated/test_views.py +++ b/src/apps/epic/tests/integrated/test_views.py @@ -608,6 +608,26 @@ class SelectRoleViewTest(TestCase): ) self.assertEqual(response.status_code, 409) + def test_select_role_redirects_when_not_role_select_phase(self): + self.room.table_status = None + self.room.save() + response = self.client.post( + reverse("epic:select_role", kwargs={"room_id": self.room.id}), + data={"role": "PC"}, + ) + self.assertRedirects( + response, reverse("epic:gatekeeper", args=[self.room.id]) + ) + + def test_select_role_redirects_for_invalid_role_code(self): + response = self.client.post( + reverse("epic:select_role", kwargs={"room_id": self.room.id}), + data={"role": "BOGUS"}, + ) + self.assertRedirects( + response, reverse("epic:gatekeeper", args=[self.room.id]) + ) + class RevealPhaseRenderingTest(TestCase): def setUp(self): @@ -699,3 +719,26 @@ class RoomActionsViewTest(TestCase): reverse("epic:abandon_room", kwargs={"room_id": self.room.id}) ) self.assertRedirects(response, "/gameboard/") + + +class ReleaseSlotViewTest(TestCase): + def setUp(self): + self.gamer = User.objects.create(email="gamer@test.io") + self.client.force_login(self.gamer) + owner = User.objects.create(email="owner@test.io") + self.room = Room.objects.create(name="Test Room", owner=owner) + self.slot = self.room.gate_slots.get(slot_number=1) + self.slot.gamer = self.gamer + self.slot.status = GateSlot.FILLED + self.slot.debited_token_type = Token.CARTE + self.slot.save() + + def test_release_slot_downgrades_open_room_to_gathering(self): + self.room.gate_status = Room.OPEN + self.room.save() + self.client.post( + reverse("epic:release_slot", kwargs={"room_id": self.room.id}), + data={"slot_number": self.slot.slot_number}, + ) + self.room.refresh_from_db() + self.assertEqual(self.room.gate_status, Room.GATHERING) diff --git a/src/apps/gameboard/tests/integrated/test_views.py b/src/apps/gameboard/tests/integrated/test_views.py index 35e5355..90d7c6f 100644 --- a/src/apps/gameboard/tests/integrated/test_views.py +++ b/src/apps/gameboard/tests/integrated/test_views.py @@ -4,7 +4,7 @@ from django.test import TestCase from django.urls import reverse from apps.applets.models import Applet, UserApplet -from apps.lyric.models import User +from apps.lyric.models import Token, User class GameboardViewTest(TestCase): @@ -101,3 +101,17 @@ class ToggleGameAppletsViewTest(TestCase): ) self.client.post(self.url, {"applets": ["new-game", "my-games"]}) self.assertFalse(UserApplet.objects.filter(user=self.user, applet=dash_applet).exists()) + + +class EquipTrinketViewTest(TestCase): + def setUp(self): + self.user = User.objects.create(email="gamer@test.io") + self.client.force_login(self.user) + self.token = Token.objects.filter(user=self.user, token_type=Token.COIN).first() + + def test_get_returns_trinket_button_partial(self): + response = self.client.get( + reverse("equip_trinket", kwargs={"token_id": self.token.pk}) + ) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "apps/gameboard/_partials/_equip_trinket_btn.html") diff --git a/src/apps/lyric/tests/unit/test_tokens.py b/src/apps/lyric/tests/unit/test_tokens.py index 0cc8f20..4aae629 100644 --- a/src/apps/lyric/tests/unit/test_tokens.py +++ b/src/apps/lyric/tests/unit/test_tokens.py @@ -73,3 +73,13 @@ class CarteTooltipTest(SimpleTestCase): def test_tooltip_contains_no_expiry(self): self.assertIn("no expiry", self.token.tooltip_text()) + + +class TitheTooltipTest(SimpleTestCase): + def setUp(self): + self.token = Token() + self.token.token_type = Token.TITHE + self.token.expires_at = None + + def test_tooltip_shoptalk_returns_none(self): + self.assertIsNone(self.token.tooltip_shoptalk())