mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 14:13:21 +00:00
subscription: add tests
Signed-off-by: Skia <skia@libskia.so>
This commit is contained in:
parent
5e8ae83cf2
commit
9ee5c387c5
@ -137,7 +137,7 @@ class Subscription(models.Model):
|
|||||||
return 'No user - ' + str(self.pk)
|
return 'No user - ' + str(self.pk)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def compute_start(d=date.today(), duration=1):
|
def compute_start(d=None, duration=1):
|
||||||
"""
|
"""
|
||||||
This function computes the start date of the subscription with respect to the given date (default is today),
|
This function computes the start date of the subscription with respect to the given date (default is today),
|
||||||
and the start date given in settings.SITH_START_DATE.
|
and the start date given in settings.SITH_START_DATE.
|
||||||
@ -147,6 +147,8 @@ class Subscription(models.Model):
|
|||||||
2015-03-17 -> 2015-02-15
|
2015-03-17 -> 2015-02-15
|
||||||
2015-01-11 -> 2014-08-15
|
2015-01-11 -> 2014-08-15
|
||||||
"""
|
"""
|
||||||
|
if not d:
|
||||||
|
d = date.today()
|
||||||
if duration <= 2: # Sliding subscriptions for 1 or 2 semesters
|
if duration <= 2: # Sliding subscriptions for 1 or 2 semesters
|
||||||
return d
|
return d
|
||||||
return get_start_of_semester(d)
|
return get_start_of_semester(d)
|
||||||
|
@ -21,7 +21,69 @@
|
|||||||
# Place - Suite 330, Boston, MA 02111-1307, USA.
|
# Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
from datetime import date
|
||||||
|
from unittest import mock
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from subscription.models import Subscription
|
||||||
|
|
||||||
|
class FakeDate(date):
|
||||||
|
"""A fake replacement for date that can be mocked for testing."""
|
||||||
|
def __new__(cls, *args, **kwargs):
|
||||||
|
return date.__new__(date, *args, **kwargs)
|
||||||
|
|
||||||
|
def date_mock_today(year, month, day):
|
||||||
|
FakeDate.today = classmethod(lambda cls: date(year, month, day))
|
||||||
|
|
||||||
|
class SubscribtionTest(TestCase):
|
||||||
|
|
||||||
|
@mock.patch('subscription.models.date', FakeDate)
|
||||||
|
def test_start_dates_sliding_without_start(self):
|
||||||
|
date_mock_today(2015, 9, 18)
|
||||||
|
d = Subscription.compute_start(duration=1)
|
||||||
|
self.assertTrue(d == date(2015, 9, 18))
|
||||||
|
self.assertTrue(Subscription.compute_start(duration=2) == date(2015, 9, 18))
|
||||||
|
|
||||||
|
def test_start_dates_sliding_with_start(self):
|
||||||
|
self.assertTrue(Subscription.compute_start(date(2015, 5, 17), 1) ==
|
||||||
|
date(2015, 5, 17))
|
||||||
|
self.assertTrue(Subscription.compute_start(date(2015, 5, 17), 2) ==
|
||||||
|
date(2015, 5, 17))
|
||||||
|
|
||||||
|
@mock.patch('subscription.models.date', FakeDate)
|
||||||
|
def test_start_dates_not_sliding_without_start(self):
|
||||||
|
date_mock_today(2015, 5, 17)
|
||||||
|
self.assertTrue(Subscription.compute_start(duration=3) == date(2015, 2, 15))
|
||||||
|
date_mock_today(2016, 1, 18)
|
||||||
|
self.assertTrue(Subscription.compute_start(duration=4) == date(2015, 8, 15))
|
||||||
|
date_mock_today(2015, 9, 18)
|
||||||
|
self.assertTrue(Subscription.compute_start(duration=4) == date(2015, 8, 15))
|
||||||
|
|
||||||
|
def test_start_dates_not_sliding_with_start(self):
|
||||||
|
self.assertTrue(Subscription.compute_start(date(2015, 5, 17), 3) ==
|
||||||
|
date(2015, 2, 15))
|
||||||
|
self.assertTrue(Subscription.compute_start(date(2015, 1, 11), 3) ==
|
||||||
|
date(2014, 8, 15))
|
||||||
|
|
||||||
|
@mock.patch('subscription.models.date', FakeDate)
|
||||||
|
def test_end_dates_sliding(self):
|
||||||
|
date_mock_today(2015, 9, 18)
|
||||||
|
d = Subscription.compute_end(2)
|
||||||
|
self.assertTrue(d == date(2016, 9, 18))
|
||||||
|
d = Subscription.compute_end(1)
|
||||||
|
self.assertTrue(d == date(2016, 3, 18))
|
||||||
|
|
||||||
|
@mock.patch('subscription.models.date', FakeDate)
|
||||||
|
def test_end_dates_not_sliding_without_start(self):
|
||||||
|
date_mock_today(2015, 9, 18)
|
||||||
|
d = Subscription.compute_end(duration=3)
|
||||||
|
self.assertTrue(d == date(2017, 2, 15))
|
||||||
|
d = Subscription.compute_end(duration=4)
|
||||||
|
self.assertTrue(d == date(2017, 8, 15))
|
||||||
|
|
||||||
|
def test_end_dates_not_sliding_with_start(self):
|
||||||
|
d = Subscription.compute_end(duration=3, start=date(2015, 9, 18))
|
||||||
|
self.assertTrue(d == date(2017, 3, 18))
|
||||||
|
d = Subscription.compute_end(duration=4, start=date(2015, 9, 18))
|
||||||
|
self.assertTrue(d == date(2017, 9, 18))
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
Loading…
Reference in New Issue
Block a user