X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/6280673f35e13e75e81c5b7821bd2a44a1831eab..357027375ff8867f42ca34bcbfb5a78b5b185fc3:/src/funding/tests.py diff --git a/src/funding/tests.py b/src/funding/tests.py new file mode 100644 index 000000000..6dbfbb457 --- /dev/null +++ b/src/funding/tests.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +from datetime import date, timedelta +from django.test import TestCase +from .models import Offer, Perk + + +class PerksTest(TestCase): + def setUp(self): + self.today = date.today() + self.offer1 = Offer.objects.create( + author='author1', title='title1', slug='slug1', + target=100, start=self.today, end=self.today) + + def test_perks(self): + perk = Perk.objects.create(price=20, name='Perk 20') + perk1 = Perk.objects.create(offer=self.offer1, price=50, name='Perk 50') + offer2 = Offer.objects.create( + author='author2', title='title2', slug='slug2', + target=100, start=self.today-timedelta(1), end=self.today-timedelta(1)) + perk2 = Perk.objects.create(offer=offer2, price=1, name='Perk 1') + + self.assertEqual( + set(self.offer1.get_perks(10)), + set()) + self.assertEqual( + set(self.offer1.get_perks(70)), + set([perk, perk1])) + + +class FundingTest(TestCase): + def setUp(self): + self.today = date.today() + self.offer_past = Offer.objects.create( + author='an-author', title='past', slug='past', + target=100, start=self.today-timedelta(1), end=self.today-timedelta(1)) + self.offer_current = Offer.objects.create( + author='an-author', title='current', slug='current', + target=100, start=self.today, end=self.today) + self.offer_future = Offer.objects.create( + author='an-author', title='future', slug='future', + target=100, start=self.today+timedelta(1), end=self.today+timedelta(1)) + + def test_current(self): + self.assertTrue(self.offer_current.is_current()) + self.assertFalse(self.offer_past.is_current()) + self.assertEqual(Offer.current(), self.offer_current) + self.assertEqual( + set(Offer.past()), + set([self.offer_past]) + ) + self.assertEqual( + set(Offer.public()), + set([self.offer_past, self.offer_current]) + ) + + def test_interrupt(self): + # A new offer starts, ending the previously current one. + offer_interrupt = Offer.objects.create( + author='an-author', title='interrupt', slug='interrupt', + target=100, start=self.today-timedelta(1), end=self.today+timedelta(1)) + + self.assertTrue(offer_interrupt.is_current()) + self.assertFalse(self.offer_current.is_current()) + self.assertEqual(Offer.current(), offer_interrupt) + self.assertEqual( + set(Offer.past()), + set([self.offer_past, self.offer_current]) + ) + self.assertEqual( + set(Offer.public()), + set([self.offer_past, self.offer_current, offer_interrupt]) + ) +