Mercurial > public > sg101
changeset 1224:d7c7a4777dd7 modernize tip
Add unit tests for contests template tags.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 10 Mar 2025 20:28:14 -0500 |
parents | 0807b202b776 |
children | |
files | contests/tests/test_contest_tags.py |
diffstat | 1 files changed, 60 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contests/tests/test_contest_tags.py Mon Mar 10 20:28:14 2025 -0500 @@ -0,0 +1,60 @@ +""" +Tests for the contests application's template tags. + +""" +from django.template import Context, Template +from django.test import TestCase + +from datetime import datetime, timedelta + +from contests.models import Contest +from contests.templatetags.contest_tags import latest_contests_block + + +class ContestsTemplateTagsTestCase(TestCase): + def setUp(self): + now = datetime.now() + then = now - timedelta(days=3) + end = now + timedelta(days=30) + contests = [ + Contest(title='Active Contest', is_public=True, + creation_date=then, end_date=end, slug='active'), + Contest(title='Non-public Contest', is_public=False, + creation_date=then, end_date=end, slug='secret'), + Contest(title='Past Contest', is_public=True, + creation_date=then, win_date=now, end_date=end, + slug='past'), + ] + for contest in contests: + contest.save() + + self.template_string = ('{% load contest_tags %}' + '{% latest_contests_block %}') + + def render_template(self, context_dict=None): + template = Template(self.template_string) + context = Context(context_dict) + return template.render(context) + + def test_latest_contests_block(self): + rendered = self.render_template() + + self.assertIn('Active Contest', rendered) + self.assertNotIn('Non-public Contest', rendered) + self.assertNotIn('Past Contest', rendered) + + def test_latest_contests_block_v3(self): + rendered = self.render_template({'V3_DESIGN': True}) + + self.assertIn('Active Contest', rendered) + self.assertNotIn('Non-public Contest', rendered) + self.assertNotIn('Past Contest', rendered) + + def test_latest_contests_block_with_no_contests(self): + Contest.objects.all().delete() + rendered = self.render_template({'V3_DESIGN': True}) + + self.assertNotIn('Active Contest', rendered) + self.assertNotIn('Non-public Contest', rendered) + self.assertNotIn('Past Contest', rendered) + self.assertIn('No contests at this time', rendered)