From 08ffe4b2f399e6f39d7178c59894abad364e1879 Mon Sep 17 00:00:00 2001 From: Mark Polak Date: Wed, 16 Oct 2013 20:58:23 +0200 Subject: [PATCH] Tests working as intended, it seems the failing tests actually fail --- dusken/fixtures/membershiptype.json | 23 ++++++++++++++++++++++- dusken/models.py | 29 ++++++++--------------------- dusken/tests/membership.py | 16 +++++++++------- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/dusken/fixtures/membershiptype.json b/dusken/fixtures/membershiptype.json index 1495772..935727c 100644 --- a/dusken/fixtures/membershiptype.json +++ b/dusken/fixtures/membershiptype.json @@ -1 +1,22 @@ -[{"pk": 1, "model": "dusken.membershiptype", "fields": {"duration_months": 12, "updated": "2013-09-11T18:44:13.123Z", "name": "Medlemskap ved DNS", "created": "2013-09-11T18:44:13.123Z", "end_month": 7, "end_day_of_month": 31}}, {"pk": 2, "model": "dusken.membershiptype", "fields": {"duration_months": 6, "updated": "2013-09-11T18:44:31.824Z", "name": "Halvtaarsmedlemskap", "created": "2013-09-11T18:44:31.824Z", "end_month": 7, "end_day_of_month": 31}}] \ No newline at end of file +[ + { + "pk": 1, + "model": "dusken.membershiptype", + "fields": { + "updated": "2013-09-11T18:44:13.123Z", + "name": "Medlemskap ved DNS", + "created": "2013-09-11T18:44:13.123Z", + "end_date": "2013-09-11" + } + }, + { + "pk": 2, + "model": "dusken.membershiptype", + "fields": { + "updated": "2013-09-11T18:44:31.824Z", + "name": "Halvtaarsmedlemskap", + "created": "2013-09-11T18:44:31.824Z", + "end_date": "2013-09-11" + } + } +] \ No newline at end of file diff --git a/dusken/models.py b/dusken/models.py index 9acf4bb..20d9acd 100644 --- a/dusken/models.py +++ b/dusken/models.py @@ -9,6 +9,7 @@ class BaseModel(models.Model): class Meta: abstract = True + class Member(django.contrib.auth.models.User): def __unicode__(self): if len(self.first_name) + len(self.last_name) > 0: @@ -26,6 +27,7 @@ class Member(django.contrib.auth.models.User): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) + class Membership(BaseModel): def __unicode__(self): return u"{member}: {fromdate}".format(member=self.member, fromdate=self.start_date) @@ -36,7 +38,7 @@ class Membership(BaseModel): member = models.ForeignKey('dusken.Member') def expires(self): - return self.mtype.end_date() + return self.mtype.end_date ''' TODO: should validate end_day_of_month and end_month (use datetime exceptions) @@ -46,26 +48,9 @@ class MembershipType(BaseModel): return u"{}".format(self.name) name = models.CharField(max_length=50, unique=True) - duration_months = models.IntegerField(default=12) - end_day_of_month = models.IntegerField(default=31) - end_month = models.IntegerField(default=7) + end_date = models.DateField() is_active = models.BooleanField(default=True) - - def end_date(self): - import datetime - now = datetime.datetime.now() - year = now.year + (now.month - 1 + self.duration_months) / 12 - month = (now.month - 1 + self.duration_months) % 12 + 1 - - end1 = datetime.datetime(year, month, now.day, 0, 0, 0) - end2 = None - # closest date which fullfills the day, month and duration specified - if now.month < self.end_month or (now.month == self.end_month and now.day < self.end_day_of_month): - end2 = datetime.datetime(now.year, self.end_month, self.end_day_of_month) - else: - end2 = datetime.datetime(now.year+1, self.end_month, self.end_day_of_month) - - return min(end1, end2) + does_not_expire = models.BooleanField(default=False) class PaymentType(models.Model): def __unicode__(self): @@ -74,6 +59,7 @@ class PaymentType(models.Model): name = models.CharField(max_length=255) is_active = models.BooleanField(default=True) + class Payment(BaseModel): def __unicode__(self): return self.payment_type #TODO @@ -91,7 +77,8 @@ class FacebookAuth(BaseModel): token = models.CharField(max_length=255, unique=True, null=True, blank=True) token_expires = models.DateTimeField(null=True, blank=True) member = models.OneToOneField('dusken.Member', null=True, blank=True) - + + class GoogleAuth(BaseModel): def __unicode__(self): return u"{}".format(self.token) diff --git a/dusken/tests/membership.py b/dusken/tests/membership.py index 2cea7fe..e2db7b6 100644 --- a/dusken/tests/membership.py +++ b/dusken/tests/membership.py @@ -54,7 +54,9 @@ class MembershipTest(ResourceTestCase): self.assertEqual(self.expected_membership(), self.deserialize(resp)) def test_get_membership_with_payment(self): - resp = self.do_get_request(self.member_url(4)) + resp = self.do_get_request(self.member_url(3)) + + self.assertValidJSONResponse(resp) def test_post_membership(self): data = { @@ -69,8 +71,8 @@ class MembershipTest(ResourceTestCase): def test_patch_membership(self): data = { - u'member': 2, - u'membership_type': 1, + #u'member': 2, + #u'membership_type': 1, u'start_date': u'2013-09-11', } @@ -86,7 +88,7 @@ class MembershipTest(ResourceTestCase): def expected_memberships(self): return [{ u'created': u'2013-09-11T20:45:13.341000', - u'expires': u'2014-07-31T00:00:00', + u'expires': u'2013-09-11', u'id': 1, u'member': 2, u'membership_type': 1, @@ -99,7 +101,7 @@ class MembershipTest(ResourceTestCase): u'membership_type': 1, u'updated': u'2013-09-11T20:45:30.084000', u'created': u'2013-09-11T20:45:30.084000', - u'expires': u'2014-07-31T00:00:00', + u'expires': u'2013-09-11', u'id': 2, u'member': 2, u'start_date': u'2013-09-15', u'payment': None, @@ -109,7 +111,7 @@ class MembershipTest(ResourceTestCase): u'membership_type': 2, u'updated': u'2013-09-11T20:45:53.522000', u'created': u'2013-09-11T20:45:53.522000', - u'expires': u'2014-03-18T00:00:00', + u'expires': u'2013-09-11', u'id': 3, u'member': 2, u'start_date': u'2013-09-11', @@ -120,7 +122,7 @@ class MembershipTest(ResourceTestCase): def expected_membership(self): return { u'created': u'2013-09-11T20:45:13.341000', - u'expires': u'2014-07-31T00:00:00', + u'expires': u'2013-09-11', u'id': 1, u'member': 2, u'membership_type': 1,