From 068b99d030d4e6d8b96dd4776d5d4019cc1ed71e Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Wed, 11 Mar 2026 15:53:31 -0400 Subject: [PATCH] added missing dunderinits to apps.applets.tests & .tests.integrated; some of the test_models ITs never were passing til now but never tested either; new apps.lyric.tests.integrated.test_models cover missing Applet model return --- src/apps/applets/tests.py | 3 - src/apps/applets/tests/__init__.py | 0 src/apps/applets/tests/integrated/__init__.py | 0 .../applets/tests/integrated/test_models.py | 4 +- src/apps/applets/views.py | 3 - .../lyric/tests/integrated/test_models.py | 57 ++++++++++++++++++- 6 files changed, 58 insertions(+), 9 deletions(-) delete mode 100644 src/apps/applets/tests.py create mode 100644 src/apps/applets/tests/__init__.py create mode 100644 src/apps/applets/tests/integrated/__init__.py delete mode 100644 src/apps/applets/views.py diff --git a/src/apps/applets/tests.py b/src/apps/applets/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/src/apps/applets/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/src/apps/applets/tests/__init__.py b/src/apps/applets/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/apps/applets/tests/integrated/__init__.py b/src/apps/applets/tests/integrated/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/apps/applets/tests/integrated/test_models.py b/src/apps/applets/tests/integrated/test_models.py index cab08cd..f4caa8c 100644 --- a/src/apps/applets/tests/integrated/test_models.py +++ b/src/apps/applets/tests/integrated/test_models.py @@ -44,8 +44,8 @@ class UserAppletModelTest(TestCase): class AppletContextTest(TestCase): def setUp(self): self.user = User.objects.create(email="a@b.cde") - self.dash_applet = Applet.objects.create(slug="username", name="Username", context="dashboard") - self.game_applet = Applet.objects.create(slug="new-game", name="New Game", context="gameboard") + self.dash_applet, _ = Applet.objects.get_or_create(slug="username", defaults={"name": "Username", "context": "dashboard"}) + self.game_applet, _ = Applet.objects.get_or_create(slug="new-game", defaults={"name": "New Game", "context": "gameboard"}) def test_filters_by_context(self): result = applet_context(self.user, "dashboard") diff --git a/src/apps/applets/views.py b/src/apps/applets/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/src/apps/applets/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/src/apps/lyric/tests/integrated/test_models.py b/src/apps/lyric/tests/integrated/test_models.py index 2e0cbdf..cacf67e 100644 --- a/src/apps/lyric/tests/integrated/test_models.py +++ b/src/apps/lyric/tests/integrated/test_models.py @@ -3,7 +3,7 @@ from django.contrib import auth from django.test import TestCase from django.utils import timezone -from apps.lyric.models import LoginToken, Token, User, Wallet +from apps.lyric.models import LoginToken, PaymentMethod, Token, User, Wallet class UserModelTest(TestCase): @@ -96,3 +96,58 @@ class TokenCreationTest(TestCase): delta = free.expires_at - timezone.now() self.assertLessEqual(delta.days, 7) self.assertGreater(delta.total_seconds(), 0) + + +class WalletTooltipTest(TestCase): + def setUp(self): + self.user = User.objects.create(email="wallet@test.io") + self.wallet = Wallet.objects.get(user=self.user) + + def test_tooltip_name(self): + self.assertEqual(self.wallet.tooltip_name(), "Wallet") + + def test_tooltip_description(self): + self.wallet.writs = 144 + self.wallet.esteem = 12 + self.assertEqual(self.wallet.tooltip_description(), "144 writs · 12 esteem") + + def test_tooltip_shoptalk_returns_none(self): + self.assertIsNone(self.wallet.tooltip_shoptalk()) + + def test_tooltip_expiry_returns_none(self): + self.assertIsNone(self.wallet.tooltip_expiry()) + + def test_tooltip_text(self): + self.assertEqual(self.wallet.tooltip_text(), "Wallet: 144 writs · 0 esteem") + + +class TokenTooltipTest(TestCase): + def setUp(self): + self.user = User.objects.create(email="tokens@test.io") + + def test_tithe_tooltip_description(self): + tithe = Token.objects.create(user=self.user, token_type=Token.TITHE) + self.assertEqual(tithe.tooltip_description(), "+ Writ bonus") + + def test_tooltip_description_empty_fallback(self): + # token_type other than COIN/FREE/TITHE hits the bare return "" + token = Token(user=self.user, token_type="") + self.assertEqual(token.tooltip_description(), "") + + def test_tooltip_expiry_empty_when_no_expiry_and_not_coin(self): + free = Token.objects.get(user=self.user, token_type=Token.FREE) + free.expires_at = None + self.assertEqual(free.tooltip_expiry(), "") + + def test_tooltip_shoptalk_none_for_non_coin(self): + free = Token.objects.get(user=self.user, token_type=Token.FREE) + self.assertIsNone(free.tooltip_shoptalk()) + + +class PaymentMethodTest(TestCase): + def setUp(self): + self.user = User.objects.create(email="pay@test.io") + + def test_str(self): + pm = PaymentMethod(user=self.user, stripe_pm_id="pm_123", last4="4242", brand="Visa") + self.assertEqual(str(pm), "Visa ....4242")