5
from Events.models import Event, EventTime, EventTag, Observance
6
from Groups.models import Group, GroupCategory
7
from Users.models import Reminder, User, Membership
5
from Events.models import Event, EventTime, EventTag, Observance, EventsUser, Reminder
6
from Groups.models import Group, GroupCategory, GroupsUser, Membership
7
from django.contrib.auth.models import User
8
8
from django.test import TestCase, Client
9
9
from django.core import mail
10
10
from django.core.urlresolvers import reverse
11
11
from datetime import datetime, timedelta
15
'email': 'lennon@thebeatles.com',
16
'password': 'johnpassword'
13
19
class BasicViewTests(TestCase):
15
21
# Reqd so that PREPEND_WWW in settings doesn't cause all view tests to fail
187
193
start = "2009-12-30 16:00:00",
188
194
finish = "2009-12-30 18:00:00")
190
self.fergus = User.objects.create(
193
email="fff21@cam.ac.uk",
195
membershipstatus="OK",
196
activationlinkkey="imokay")
197
self.fergus.UpdatePassword("password")
196
self.fergus = User.objects.create_user(
197
dummyuser_data['username'],
198
dummyuser_data['email'],
199
dummyuser_data['password'],
202
self.fergus_events = EventsUser.objects.create(user = self.fergus)
203
self.fergus_groups = GroupsUser.objects.create(user = self.fergus)
200
reverse('Users.views.Login', args=[""]),
201
{'email': self.fergus.email, 'password': "password"})
206
username = dummyuser_data['username'],
207
password = dummyuser_data['password']
203
211
# Event page user functions
205
213
def test_event_reminder_day(self):
206
214
''' View an event with the day reminder set '''
207
Reminder.objects.create(person = self.fergus, event = self.event, assoctype='EML_DY')
215
Reminder.objects.create(events_user = self.fergus.eventsuser, event = self.event, assoctype='EML_DY')
208
216
response = self.client.get(reverse('Events.views.ViewEvent', args=[self.event.id]))
209
217
self.assertContains(response, "<input id='day' name='day' type='checkbox' checked value='1'/>", count=1, status_code=200)
211
219
def test_event_reminder_hour(self):
212
220
''' View an event with the hour reminder set '''
213
Reminder.objects.create(person = self.fergus, event = self.event, assoctype='EML_HR')
221
Reminder.objects.create(events_user = self.fergus.eventsuser, event = self.event, assoctype='EML_HR')
214
222
response = self.client.get(reverse('Events.views.ViewEvent', args=[self.event.id]))
215
223
self.assertContains(response, "<input id='hour' name='hour' type='checkbox' checked value='1'/>", count=1, status_code=200)
220
228
self.assertNotContains(response, "Edit this Event", status_code=200)
221
229
self.assertNotContains(response, "(delete)", status_code=200)
222
230
self.assertNotContains(response, "Add another time for this event", status_code=200)
223
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
231
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
224
232
response = self.client.get(reverse('Events.views.ViewEvent', args=[self.event.id]))
225
233
self.assertContains(response, "Edit this Event", status_code=200)
226
234
self.assertContains(response, "(delete)", status_code=200)
232
240
''' Show the groups to which a user may add a group '''
233
241
response = self.client.get(reverse('Events.views.Add'))
234
242
self.assertEquals(response.status_code, 200)
235
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
243
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
236
244
response = self.client.get(reverse('Events.views.Add'))
237
245
self.assertContains(response, "My Python", status_code=200)
241
249
def test_event_add_group(self):
242
250
''' Show the fresh or clone add event page '''
243
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
251
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
244
252
response = self.client.get(reverse('Events.views.AddOrClone', args=[self.group.id]))
245
253
self.assertContains(response, "Dull Old Event", status_code=200)
279
287
def test_event_add_to_group(self):
280
288
''' Create an event from scratch for a group '''
281
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
289
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
282
290
response = self.client.get(reverse('Events.views.AddToGroup', args=[self.group.id]))
283
291
self.assertEquals(response.status_code, 200)
285
293
def test_event_add_to_group_clone(self):
286
294
''' Clone an event for a group '''
287
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
295
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
288
296
response = self.client.get(reverse('Events.views.AddToGroup', args=[self.group.id]), {'clone': self.event.id})
289
297
self.assertContains(response, self.event.title, count = 1, status_code = 200)
291
299
def test_event_add_to_group_post(self):
292
300
''' Submitting a new event for a group '''
293
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
301
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
294
302
response = self.client.post(reverse('Events.views.AddToGroup', args=[self.group.id]), {
295
303
'title': "New Event",
296
304
'description': "It's vonderful and newwwww.",
313
321
def test_event_edit(self):
314
322
''' Trying to edit an event '''
315
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
323
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
316
324
response = self.client.get(reverse('Events.views.EditEvent', args=[self.event.id]))
317
325
self.assertContains(response, self.event.title, status_code = 200)
319
327
def test_event_edit_post(self):
320
328
''' Updating an event '''
321
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
329
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
322
330
response = self.client.post(reverse('Events.views.EditEvent', args=[self.event.id]), {
323
331
'title': 'New Title',
324
332
'description': 'Newer than before. yes. ',
331
339
# Delete EventTime
332
340
def test_event_time_delete_confirm(self):
333
341
''' Confirm that you want to remove an eventtime '''
334
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
342
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
335
343
response = self.client.get(reverse('Events.views.DeleteTime', args=[self.event.id, self.eventtime.id]))
336
344
self.assertEquals(response.status_code, 200)
338
346
def test_event_time_delete(self):
339
347
''' Remove an EventTime '''
340
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
348
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
341
349
response = self.client.post(reverse('Events.views.DeleteTime', args=[self.event.id, self.eventtime.id]), {'blank':'1'})
342
350
self.assertRaises(EventTime.DoesNotExist, EventTime.objects.get, id = self.eventtime.id)
343
351
self.assertRedirects(response, reverse('Events.views.ViewEvent', args=[self.event.id]), host = self.host)
348
356
def test_event_time_add(self):
349
357
''' Add an EventTime form shows '''
350
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
358
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
351
359
response = self.client.get(reverse('Events.views.AddTime', args=[self.event.id]))
352
360
self.assertNotContains(response, "This event has been added.", status_code = 200)
354
362
def test_event_time_added(self):
355
363
''' Adding an EventTime after adding the event '''
356
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
364
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
357
365
response = self.client.get(reverse('Events.views.NowAddTime', args=[self.event.id]))
358
366
self.assertContains(response, "This event has been added.", count = 1, status_code = 200)
360
368
def test_event_time_add_negative(self):
361
369
''' Adding an EventTime with finish before start! '''
362
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
370
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
363
371
response = self.client.post(reverse('Events.views.NowAddTime', args=[self.event.id]), {
364
372
'start': '2008-12-31 10:20:11',
365
373
'finish': '2008-12-30 12:00:00'})
369
377
def test_event_time_add_okay(self):
370
378
''' Adding an EventTime '''
371
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
379
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
372
380
response = self.client.post(reverse('Events.views.NowAddTime', args=[self.event.id]), {
373
381
'start': '2008-12-31 10:20:11',
374
382
'finish': '2008-12-31 12:00:00'})
378
386
def test_event_time_add_no_end(self):
379
387
''' Adding an EventTime with no end time'''
380
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
388
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
381
389
response = self.client.post(reverse('Events.views.NowAddTime', args=[self.event.id]), {
382
390
'start': '2008-12-31 10:20:11'})
383
391
self.assertNotContains(response, "The finish time was before the start time! Please correct this and resubmit.", status_code = 200)
386
394
def test_event_time_add_date_end(self):
387
395
''' Adding an EventTime with date end time'''
388
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
396
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
389
397
response = self.client.post(reverse('Events.views.NowAddTime', args=[self.event.id]), {
390
398
'start': '2008-12-31 10:20:11',
391
399
'finish': '2009-01-01'})
395
403
def test_event_time_add_date_start(self):
396
404
''' Adding an EventTime with date start time only'''
397
Membership.objects.create(person = self.fergus, group = self.group, assoctype = "CTL")
405
Membership.objects.create(groups_user = self.fergus.groupsuser, group = self.group, assoctype = "CTL")
398
406
response = self.client.post(reverse('Events.views.NowAddTime', args=[self.event.id]), {
399
407
'start': '2008-12-31'})
400
408
# self.assertEquals(response.content, "")
405
413
''' Set 1 hour reminder for event '''
406
414
response = self.client.get(reverse('Events.views.SetReminders', args=[self.event.id]), {'hour': '1'})
407
415
self.assertRedirects(response, reverse('Events.views.ViewEvent', args=[self.event.id]), host = self.host)
408
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_HR").count(), 1)
409
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_DY").count(), 0)
416
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_HR").count(), 1)
417
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_DY").count(), 0)
411
419
def test_set_reminder_day(self):
412
420
''' Set 1 day reminder for event '''
413
421
response = self.client.get(reverse('Events.views.SetReminders', args=[self.event.id]), {'day': '1'})
414
422
self.assertRedirects(response, reverse('Events.views.ViewEvent', args=[self.event.id]), host = self.host)
415
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_DY").count(), 1)
416
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_HR").count(), 0)
423
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_DY").count(), 1)
424
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_HR").count(), 0)
418
426
def test_set_reminder_unset(self):
419
427
''' Set both reminders, and then unset both '''
420
428
response = self.client.get(reverse('Events.views.SetReminders', args=[self.event.id]), {'day': '1', 'hour': '1'})
421
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_DY").count(), 1)
422
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_HR").count(), 1)
429
self.assertEquals(Reminder.objects.filter(events_user = self.fergus_events, event = self.event, assoctype = "EML_DY").count(), 1)
430
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_HR").count(), 1)
423
431
response = self.client.get(reverse('Events.views.SetReminders', args=[self.event.id]), {'day': '0', 'hour': '0'})
424
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_DY").count(), 0)
425
self.assertEquals(Reminder.objects.filter(person = self.fergus, event = self.event, assoctype = "EML_HR").count(), 0)
b'\\ No newline at end of file'
432
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_DY").count(), 0)
433
self.assertEquals(Reminder.objects.filter(events_user = self.fergus.eventsuser, event = self.event, assoctype = "EML_HR").count(), 0)