-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtests.py
72 lines (56 loc) · 2.59 KB
/
tests.py
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
from django.test import TestCase
from .models import Event, EventAttendee, Place, EventCannotAttendException
from datetime import date, timedelta
from django.utils import timezone
import uuid
PLACE_MOCK = {'name': 'Place'}
EVENT_MOCKS = [
{'name': 'Event', 'event_date': date(2015, 1, 1), 'capacity': 1,
'close_date': timezone.now() - timedelta(days=1), 'description': 'empty'},
{'name': 'Event1', 'event_date': date(2015, 1, 1), 'capacity': 0,
'close_date': timezone.now() + timedelta(days=1), 'description': 'empty', 'backup': False},
{'name': 'Event2', 'event_date': date(2015, 1, 1), 'capacity': 1,
'close_date': timezone.now() + timedelta(days=1), 'description': 'empty'},
{'name': 'Event3', 'event_date': date(2015, 1, 1), 'capacity': 1,
'close_date': timezone.now() + timedelta(days=1), 'description': 'empty'}
]
def create_events():
place = Place.objects.create(**PLACE_MOCK)
for event in EVENT_MOCKS:
Event.objects.create(**event, url_alias=uuid.uuid4(), place=place)
def attend_event(event, times=1):
for i in range(0, times):
EventAttendee(event=event, attendee_name="Name", registration_date=timezone.now()).save()
class EventTestCase(TestCase):
def setUp(self):
create_events()
def test_event_is_past(self):
event = Event.objects.get(name='Event')
self.assertEqual(event.is_past(), True)
def test_event_is_not_full_with_capacity(self):
event = Event.objects.get(name='Event')
self.assertEqual(event.is_full(), False)
def test_event_is_full_when_capacity_zero(self):
event = Event.objects.get(name='Event1')
self.assertEqual(event.is_full(), True)
def test_event_is_full_when_equals(self):
event = Event.objects.get(name='Event3')
capacity = event.capacity
attend_event(event, times=capacity)
self.assertEqual(event.is_full(), True)
class EventAttendeeTestCase(TestCase):
def setUp(self):
create_events()
def test_can_register_to_empty_event_with_capacity(self):
event = Event.objects.get(name='Event3')
attend_event(event)
self.assertTrue
def test_can_register_to_full_event_accepting_backups(self):
event = Event.objects.get(name='Event2')
times = 2
attend_event(event, times=times)
self.assertTrue(EventAttendee.objects.filter(event=event).count(), times)
def test_cannot_register_to_full_event_not_accepting_backups(self):
event = Event.objects.get(name='Event1')
with self.assertRaises(EventCannotAttendException) as are:
attend_event(event)