1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
from datetime import date, timedelta
from django.test import TestCase
from members.models import (
GOLD_MEMBERSHIP,
PLATINUM_MEMBERSHIP,
SILVER_MEMBERSHIP,
CorporateMember,
IndividualMember,
Team,
)
class IndividualMemberTests(TestCase):
@classmethod
def setUpTestData(cls):
cls.member = IndividualMember.objects.create(
name="DjangoDeveloper", email="developer@example.com"
)
def setUp(self):
self.member.refresh_from_db()
def test_str(self):
self.assertEqual(str(self.member), "DjangoDeveloper")
def test_member_since_should_have_default(self):
self.assertEqual(IndividualMember().member_since, date.today())
def test_is_active(self):
self.assertTrue(self.member.is_active)
self.member.member_until = date.today()
self.assertFalse(self.member.is_active)
class CorporateMemberTests(TestCase):
today = date.today()
tomorrow = today + timedelta(days=1)
@classmethod
def setUpTestData(cls):
cls.member = CorporateMember.objects.create(
display_name="Corporation",
billing_name="foo",
billing_email="c@example.com",
contact_email="c@example.com",
membership_level=SILVER_MEMBERSHIP,
)
def setUp(self):
self.member.refresh_from_db()
def test_str(self):
self.assertEqual(str(self.member), "Corporation")
def test_is_invoiced(self):
# No invoices == not invoiced.
self.assertEqual(self.member.is_invoiced, False)
# Invoice but no sent_date == not invoiced.
invoice = self.member.invoice_set.create(amount=500)
self.assertEqual(self.member.is_invoiced, False)
# Invoice with an sent_date == invoiced.
invoice.sent_date = self.today
invoice.save()
self.assertEqual(self.member.is_invoiced, True)
def test_is_paid(self):
# No invoices == not paid.
self.assertEqual(self.member.is_paid, False)
# Invoice but no paid_date == not paid.
invoice = self.member.invoice_set.create(amount=500)
self.assertEqual(self.member.is_paid, False)
# Invoice with a paid_date == paid.
invoice.paid_date = self.today
invoice.save()
self.assertEqual(self.member.is_paid, True)
def test_get_expiry_date(self):
self.assertIsNone(self.member.get_expiry_date())
self.member.invoice_set.create(amount=500)
self.assertIsNone(self.member.get_expiry_date())
self.member.invoice_set.create(amount=500, expiration_date=self.today)
self.assertEqual(self.member.get_expiry_date(), self.today)
self.member.invoice_set.create(amount=500, expiration_date=self.tomorrow)
self.assertEqual(self.member.get_expiry_date(), self.tomorrow)
def test_manager_by_membership_level(self):
self.assertEqual(CorporateMember.objects.by_membership_level(), {})
self.member.invoice_set.create(amount=500, expiration_date=self.tomorrow)
self.assertEqual(
CorporateMember.objects.by_membership_level(), {"silver": [self.member]}
)
self.member.membership_level = GOLD_MEMBERSHIP
self.member.save()
self.assertEqual(
CorporateMember.objects.by_membership_level(), {"gold": [self.member]}
)
self.member.membership_level = PLATINUM_MEMBERSHIP
self.member.save()
self.assertEqual(
CorporateMember.objects.by_membership_level(), {"platinum": [self.member]}
)
class TeamTests(TestCase):
def test_str(self):
self.assertEqual(str(Team(name="Ops")), "Ops")
|