Mercurial > public > sg101
changeset 1208:5c8a38122e24 modernize tip
Add unit test for POTD tasks.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 28 Jan 2025 19:02:18 -0600 |
parents | 80f206a12027 |
children | |
files | potd/tests/test_tasks.py |
diffstat | 1 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/potd/tests/test_tasks.py Tue Jan 28 19:02:18 2025 -0600 @@ -0,0 +1,45 @@ +""" +Unit tests for the potd application tasks. + +""" +from django.test import TestCase + +from potd.models import Current, Photo, Sequence +from potd.tasks import pick_potd + + +class PickPotdTestCase(TestCase): + """Testing the pick_potd celery task.""" + fixtures = ['potd_test.json'] + + def test_picks_the_next_photo_in_sequence(self): + task = pick_potd.s().apply() + current_id = Current.objects.get_current_id() + self.assertEqual(current_id, 2) + + new_photo = Photo.objects.get(pk=2) + self.assertEqual(new_photo.potd_count, 6) + + def test_generates_a_new_sequence(self): + current = Current.objects.get(pk=1) + new_photo = Photo.objects.get(pk=3) + current.potd = new_photo + current.save() + + task = pick_potd.s().apply() + + # The sequence gets shuffled, but there is a good chance it + # might be the same, so don't test that. + + current_photo = Current.objects.get_current_photo() + new_seq = Sequence.objects.get(pk=1).seq.split(',') + self.assertEqual(len(new_seq), 3) + self.assertEqual(int(new_seq[0]), current_photo.pk) + + if current_photo.pk == 1 or current_photo.pk == 3: + self.assertEqual(current_photo.potd_count, 7) + elif current_photo.pk == 2: + self.assertEqual(current_photo.potd_count, 6) + else: + self.fail('Unexpected photo pk in new sequence') +