6
6
from django .test import TestCase
7
7
from django .utils import timezone
8
8
9
- from ..models import Calendar , Event , EventCategory , EventLocation , RecurringRule
9
+ from ..models import Calendar , Event , EventCategory , EventLocation , RecurringRule , OccurringRule
10
10
from ..templatetags .events import get_events_upcoming
11
11
from users .factories import UserFactory
12
12
@@ -18,6 +18,11 @@ def setUpTestData(cls):
18
18
cls .calendar = Calendar .objects .create (creator = cls .user , slug = "test-calendar" )
19
19
cls .event = Event .objects .create (creator = cls .user , calendar = cls .calendar )
20
20
cls .event_past = Event .objects .create (title = 'Past Event' , creator = cls .user , calendar = cls .calendar )
21
+ cls .event_single_day = Event .objects .create (title = "Single Day Event" , creator = cls .user , calendar = cls .calendar )
22
+ cls .event_starts_at_future_year = Event .objects .create (title = 'Event Starting Following Year' ,
23
+ creator = cls .user , calendar = cls .calendar )
24
+ cls .event_ends_at_future_year = Event .objects .create (title = 'Event Ending Following Year' ,
25
+ creator = cls .user , calendar = cls .calendar )
21
26
22
27
cls .now = timezone .now ()
23
28
@@ -34,7 +39,6 @@ def setUpTestData(cls):
34
39
begin = cls .now - datetime .timedelta (days = 2 ),
35
40
finish = cls .now - datetime .timedelta (days = 1 ),
36
41
)
37
-
38
42
# Future event
39
43
cls .future_event = Event .objects .create (title = 'Future Event' , creator = cls .user , calendar = cls .calendar , featured = True )
40
44
RecurringRule .objects .create (
@@ -67,18 +71,36 @@ def setUpTestData(cls):
67
71
finish = cls .now - datetime .timedelta (days = 1 ),
68
72
)
69
73
74
+ cls .rule_single_day = OccurringRule .objects .create (
75
+ event = cls .event_single_day ,
76
+ dt_start = recurring_time_dtstart ,
77
+ dt_end = recurring_time_dtstart
78
+ )
79
+ cls .rule_future_start_year = OccurringRule .objects .create (
80
+ event = cls .event_starts_at_future_year ,
81
+ dt_start = recurring_time_dtstart + datetime .timedelta (weeks = 52 ),
82
+ dt_end = recurring_time_dtstart + datetime .timedelta (weeks = 53 ),
83
+ )
84
+ cls .rule_future_end_year = OccurringRule .objects .create (
85
+ event = cls .event_ends_at_future_year ,
86
+ dt_start = recurring_time_dtstart ,
87
+ dt_end = recurring_time_dtend + datetime .timedelta (weeks = 52 )
88
+ )
89
+
70
90
def test_events_homepage (self ):
71
91
url = reverse ('events:events' )
72
92
response = self .client .get (url )
73
93
events = response .context ['object_list' ]
74
94
event_titles = [event .title for event in events ]
75
95
76
96
self .assertEqual (response .status_code , 200 )
77
- self .assertEqual (len (events ), 6 )
97
+ self .assertEqual (len (events ), 9 )
78
98
79
99
self .assertIn ('Future Event' , event_titles )
80
100
self .assertIn ('Current Event' , event_titles )
81
101
self .assertIn ('Past Event' , event_titles )
102
+ self .assertIn ('Event Starting Following Year' , event_titles )
103
+ self .assertIn ('Event Ending Following Year' , event_titles )
82
104
83
105
def test_calendar_list (self ):
84
106
calendars_count = Calendar .objects .count ()
@@ -93,7 +115,7 @@ def test_event_list(self):
93
115
response = self .client .get (url )
94
116
95
117
self .assertEqual (response .status_code , 200 )
96
- self .assertEqual (len (response .context ['object_list' ]), 3 )
118
+ self .assertEqual (len (response .context ['object_list' ]), 6 )
97
119
98
120
url = reverse ('events:event_list_past' , kwargs = {"calendar_slug" : 'unexisting' })
99
121
response = self .client .get (url )
@@ -189,12 +211,21 @@ def test_event_detail(self):
189
211
self .assertEqual (self .event , response .context ['object' ])
190
212
191
213
def test_upcoming_tag (self ):
192
- self .assertEqual (len (get_events_upcoming ()), 3 )
214
+ self .assertEqual (len (get_events_upcoming ()), 5 )
193
215
self .assertEqual (len (get_events_upcoming (only_featured = True )), 1 )
194
216
self .rule .begin = self .now - datetime .timedelta (days = 3 )
195
217
self .rule .finish = self .now - datetime .timedelta (days = 2 )
196
218
self .rule .save ()
197
- self .assertEqual (len (get_events_upcoming ()), 2 )
219
+ self .assertEqual (len (get_events_upcoming ()), 5 )
220
+
221
+ def test_event_starting_future_year_displays_relevant_year (self ):
222
+ event = self .event_starts_at_future_year
223
+ url = reverse ('events:events' )
224
+ response = self .client .get (url )
225
+ self .assertIn (
226
+ f'<span id="start-{ event .id } ">' ,
227
+ response .content .decode ()
228
+ )
198
229
199
230
def test_context_data (self ):
200
231
url = reverse ("events:events" )
@@ -204,6 +235,23 @@ def test_context_data(self):
204
235
self .assertIn ("upcoming_events" , response .context )
205
236
self .assertIn ("events_now" , response .context )
206
237
238
+ def test_event_ending_future_year_displays_relevant_year (self ):
239
+ event = self .event_ends_at_future_year
240
+ url = reverse ('events:events' )
241
+ response = self .client .get (url )
242
+ self .assertIn (
243
+ f'<span id="end-{ event .id } ">' ,
244
+ response .content .decode ()
245
+ )
246
+
247
+ def test_events_scheduled_current_year_does_not_display_current_year (self ):
248
+ event = self .event_single_day
249
+ url = reverse ('events:events' )
250
+ response = self .client .get (url )
251
+ self .assertIn ( # start date
252
+ f'<span id="start-{ event .id } " class="say-no-more">' ,
253
+ response .content .decode ()
254
+ )
207
255
208
256
class EventSubmitTests (TestCase ):
209
257
event_submit_url = reverse_lazy ('events:event_submit' )
0 commit comments