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:
@@ -85,3 +85,25 @@ class LoginViewTest(TestCase):
|
||||
mock_auth.authenticate.call_args,
|
||||
mock.call(uid="abc123")
|
||||
)
|
||||
|
||||
|
||||
class DevLoginViewTest(TestCase):
|
||||
def test_happy_path_sets_session_cookie_and_redirects(self):
|
||||
from django.test import override_settings
|
||||
with override_settings(DEBUG=True):
|
||||
response = self.client.get("/lyric/dev-login/testsessionkey/")
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response["Location"], "/")
|
||||
self.assertIn("sessionid", response.cookies)
|
||||
|
||||
def test_next_param_sets_redirect_target(self):
|
||||
from django.test import override_settings
|
||||
with override_settings(DEBUG=True):
|
||||
response = self.client.get("/lyric/dev-login/key/?next=/gameboard/")
|
||||
self.assertEqual(response["Location"], "/gameboard/")
|
||||
|
||||
def test_returns_404_when_debug_is_false(self):
|
||||
from django.test import override_settings
|
||||
with override_settings(DEBUG=False):
|
||||
response = self.client.get("/lyric/dev-login/key/")
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from django.test import SimpleTestCase
|
||||
from django.utils import timezone
|
||||
from unittest.mock import Mock
|
||||
|
||||
from apps.lyric.templatetags.lyric_extras import display_name, truncate_email
|
||||
from apps.lyric.templatetags.lyric_extras import display_name, relative_ts, truncate_email
|
||||
|
||||
|
||||
class TruncateEmailTest(SimpleTestCase):
|
||||
@@ -34,3 +35,30 @@ class DisplayNameFilterTest(SimpleTestCase):
|
||||
def test_returns_username_when_set(self):
|
||||
user = Mock(username="earthman", email="sesquipedalian@abc.de")
|
||||
self.assertEqual(display_name(user), "earthman")
|
||||
|
||||
|
||||
class RelativeTsFilterTest(SimpleTestCase):
|
||||
def test_returns_empty_string_for_none(self):
|
||||
self.assertEqual(relative_ts(None), "")
|
||||
|
||||
def test_returns_time_for_recent_dt(self):
|
||||
dt = timezone.now() - timezone.timedelta(hours=1)
|
||||
result = relative_ts(dt)
|
||||
self.assertRegex(result, r'\d+:\d+')
|
||||
|
||||
def test_returns_weekday_for_2_day_old_dt(self):
|
||||
dt = timezone.now() - timezone.timedelta(days=2)
|
||||
result = relative_ts(dt)
|
||||
self.assertIn(result, ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"])
|
||||
|
||||
def test_returns_month_day_for_30_day_old_dt(self):
|
||||
dt = timezone.now() - timezone.timedelta(days=30)
|
||||
result = relative_ts(dt)
|
||||
import re
|
||||
self.assertRegex(result, r'^\d{2} \w{3}$')
|
||||
|
||||
def test_returns_month_day_year_for_over_1_year_old_dt(self):
|
||||
dt = timezone.now() - timezone.timedelta(days=400)
|
||||
result = relative_ts(dt)
|
||||
import re
|
||||
self.assertRegex(result, r'^\d{2} \w{3} \d{4}$')
|
||||
|
||||
Reference in New Issue
Block a user