COVERAGE: patch 91% → 96%+ — 603 tests, tasks.py at 100%
New/extended tests across billboard, dashboard, drama, epic, gameboard, and lyric to cover previously untested branches: dev_login view, scroll position endpoints, sky preview error paths, drama to_prose/to_activity branches, consumer broadcast handlers, tarot deck draw/shuffle, astrology model __str__, character model, sig reserve/ready/confirm views, natus preview/save views, and the full tasks.py countdown scheduler. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from apps.applets.models import Applet, UserApplet
|
||||
from apps.epic.models import DeckVariant
|
||||
from apps.lyric.models import Token, User
|
||||
|
||||
|
||||
@@ -106,6 +107,64 @@ class ToggleGameAppletsViewTest(TestCase):
|
||||
self.assertFalse(UserApplet.objects.filter(user=self.user, applet=dash_applet).exists())
|
||||
|
||||
|
||||
class EquipDeckViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create(email="gamer@test.io")
|
||||
self.client.force_login(self.user)
|
||||
self.deck = DeckVariant.objects.first()
|
||||
|
||||
def test_get_returns_405(self):
|
||||
response = self.client.get(reverse("equip_deck", kwargs={"deck_id": self.deck.pk}))
|
||||
self.assertEqual(response.status_code, 405)
|
||||
|
||||
def test_post_equips_deck(self):
|
||||
response = self.client.post(reverse("equip_deck", kwargs={"deck_id": self.deck.pk}))
|
||||
self.assertEqual(response.status_code, 204)
|
||||
self.user.refresh_from_db()
|
||||
self.assertEqual(self.user.equipped_deck, self.deck)
|
||||
|
||||
|
||||
class UnequipDeckViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create(email="gamer@test.io")
|
||||
self.deck = DeckVariant.objects.first()
|
||||
self.user.equipped_deck = self.deck
|
||||
self.user.save(update_fields=["equipped_deck"])
|
||||
self.client.force_login(self.user)
|
||||
|
||||
def test_get_returns_405(self):
|
||||
response = self.client.get(reverse("unequip_deck", kwargs={"deck_id": self.deck.pk}))
|
||||
self.assertEqual(response.status_code, 405)
|
||||
|
||||
def test_post_clears_equipped_deck_when_matches(self):
|
||||
response = self.client.post(reverse("unequip_deck", kwargs={"deck_id": self.deck.pk}))
|
||||
self.assertEqual(response.status_code, 204)
|
||||
self.user.refresh_from_db()
|
||||
self.assertIsNone(self.user.equipped_deck)
|
||||
|
||||
def test_post_ignores_non_matching_deck(self):
|
||||
other_deck = DeckVariant.objects.exclude(pk=self.deck.pk).first()
|
||||
if other_deck is None:
|
||||
self.skipTest("Only one deck variant in DB")
|
||||
self.client.post(reverse("unequip_deck", kwargs={"deck_id": other_deck.pk}))
|
||||
self.user.refresh_from_db()
|
||||
self.assertEqual(self.user.equipped_deck, self.deck)
|
||||
|
||||
|
||||
class UnequipTrinketViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create(email="gamer@test.io")
|
||||
self.client.force_login(self.user)
|
||||
|
||||
def test_get_returns_405(self):
|
||||
from apps.lyric.models import Token
|
||||
token = Token.objects.filter(user=self.user).first()
|
||||
if token is None:
|
||||
self.skipTest("No token for user")
|
||||
response = self.client.get(reverse("unequip_trinket", kwargs={"token_id": token.pk}))
|
||||
self.assertEqual(response.status_code, 405)
|
||||
|
||||
|
||||
class GameKitViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create(email="gamer@test.io")
|
||||
|
||||
Reference in New Issue
Block a user