def test_live(self): """Tests that Event.objects.live() returns events that could occur.""" user = User.objects.create_user( 'foo', '*****@*****.**', 'secret' ) event = create_event( start_date=(2014, 5, 1), end_date=(2014, 5, 1), created_by=user, title="kowabunga", description="Testing 1 2 3", repeat="BIWEEKLY", utc=True ) event2 = create_event( start_date=(2014, 6, 1), end_date=(2014, 6, 1), created_by=user, title="kowabunga", description="Testing 1 2 3", repeat="WEEKDAY", utc=True ) event3 = create_event( start_date=(2014, 5, 2), end_date=(2014, 5, 4), created_by=user, title="gnarly", description="Testing 1 2 3", repeat="NEVER", utc=True ) event4 = create_event( start_date=(2014, 4, 2), end_date=(2014, 4, 4), created_by=user, title="tubular", description="Testing 1 2 3", repeat="WEEKLY", end_repeat=date(2014, 5, 2), utc=True ) event.save() event2.save() event3.save() event4.save() now = make_aware(datetime(2014, 5, 6), utc) events = Event.objects.live(now) self.assertEqual(len(events), 2) self.assertEqual(events[0].title, event.title) self.assertEqual(events[0].pk, event.pk) self.assertEqual(events[1].title, event2.title) self.assertEqual(events[1].pk, event2.pk)
def test_cancelled_single_day_event(self): yr = 2014 mo = 5 count = defaultdict(list) event = create_event(start_date=(2014, 5, 15), end_date=(2014, 5, 15), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY") event.cancellations.create(reason="Out of town", date=date(2014, 5, 22)) days = (15, 22, 29) [count[day].append((event.title, event.pk)) for day in days] events = [event] cal = GenericCalendar(yr, mo, count, events) cal.event = event for day in days: cal.title = event.title cal.day = day cal.check_if_cancelled() if day == 22: self.assertEqual(event.title + ' (CANCELLED)', cal.title) else: self.assertEqual(event.title, cal.title)
def test_cancelled_single_day_event(self): yr = 2014 mo = 5 count = defaultdict(list) event = create_event( start_date=(2014, 5, 15), end_date=(2014, 5, 15), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY" ) event.cancellations.create( reason="Out of town", date=date(2014, 5, 22) ) days = (15, 22, 29) [count[day].append((event.title, event.pk)) for day in days] events = [event] cal = GenericCalendar(yr, mo, count, events) cal.event = event for day in days: cal.title = event.title cal.day = day cal.check_if_cancelled() if day == 22: self.assertEqual(event.title + ' (CANCELLED)', cal.title) else: self.assertEqual(event.title, cal.title)
def test_repeat_reverse_out_of_range_start(self): """ An out of range start day should not be counted, but any valid days that occur after the day has been decremented, should. """ start = 33 end = 30 end_repeat = None event = create_event( start_date=(2014, 5, 28), end_date=(2014, 5, 28), created_by=self.user, title="event", description="Testing 1 2 3", repeat="WEEKDAY", ) c = h.Repeater(self.counter, self.year, self.month, end_repeat=end_repeat, event=event) c.repeat_reverse(start, end) self.assertEqual(len(c.count), 2) self.assertEqual(c.count[30], [('event', event.pk)]) self.assertEqual(c.count[31], [('event', event.pk)])
def test_location(self): """ Test that, if an event has a location associated with it, it gets set when popover_helper() is called (the event location only appears in the popover on the month calendar view page). """ yr = 2014 mo = 5 count = defaultdict(list) event = create_event(start_date=(2014, 5, 15), end_date=(2014, 5, 15), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY") # Test first without a location events = [event] day = 15 count_dict = {day: [(event.title, event.pk)]} cal = EventCalendar(yr, mo, count, events) cal.count = count_dict render_result = cal.formatday(day, 0) self.assertNotIn("Where:", render_result) self.assertNotIn("Heck", render_result) # Test with a location event.location.create(name="Heck") events = [event] cal2 = EventCalendar(yr, mo, count, events) cal2.count = count_dict render_result = cal2.formatday(day, 0) self.assertIn("Where:", render_result) self.assertIn("Heck", render_result)
def test_repeat_reverse_out_of_range_start(self): """ An out of range start day should not be counted, but any valid days that occur after the day has been decremented, should. """ start = 33 end = 30 end_repeat = None event = create_event( start_date=(2014, 5, 28), end_date=(2014, 5, 28), created_by=self.user, title="event", description="Testing 1 2 3", repeat="WEEKDAY", utc=True ) c = h.Repeater( self.counter, self.year, self.month, end_repeat=end_repeat, event=event ) c.repeat_reverse(start, end) self.assertEqual(len(c.count), 2) self.assertEqual(c.count[30], [('event', event.pk)]) self.assertEqual(c.count[31], [('event', event.pk)])
def test_cancelled_chunk_event(self): """Only the date given in the cancellation should show up cancelled. This means that a two day event with only the first day cancelled, should only show (CANCELLED) for the first day.""" yr = 2014 mo = 5 count = defaultdict(list) event = create_event(start_date=(2014, 5, 15), end_date=(2014, 5, 16), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY") event.cancellations.create(reason="Out of town", date=date(2014, 5, 22)) days = (15, 16, 22, 23, 29, 30) [count[day].append((event.title, event.pk)) for day in days] events = [event] cal = GenericCalendar(yr, mo, count, events) cal.event = event for day in days: cal.title = event.title cal.day = day cal.check_if_cancelled() if day == 22: self.assertEqual(event.title + ' (CANCELLED)', cal.title) else: self.assertEqual(event.title, cal.title)
def test_cancelled_chunk_event(self): """Only the date given in the cancellation should show up cancelled. This means that a two day event with only the first day cancelled, should only show (CANCELLED) for the first day.""" yr = 2014 mo = 5 count = defaultdict(list) event = create_event( start_date=(2014, 5, 15), end_date=(2014, 5, 16), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY" ) event.cancellations.create( reason="Out of town", date=date(2014, 5, 22) ) days = (15, 16, 22, 23, 29, 30) [count[day].append((event.title, event.pk)) for day in days] events = [event] cal = GenericCalendar(yr, mo, count, events) cal.event = event for day in days: cal.title = event.title cal.day = day cal.check_if_cancelled() if day == 22: self.assertEqual(event.title + ' (CANCELLED)', cal.title) else: self.assertEqual(event.title, cal.title)
def test_live(self): """Tests that Event.objects.live() returns events that could occur.""" user = User.objects.create_user('foo', '*****@*****.**', 'secret') event = create_event(start_date=(2014, 5, 1), end_date=(2014, 5, 1), created_by=user, title="kowabunga", description="Testing 1 2 3", repeat="BIWEEKLY", utc=True) event2 = create_event(start_date=(2014, 6, 1), end_date=(2014, 6, 1), created_by=user, title="kowabunga", description="Testing 1 2 3", repeat="WEEKDAY", utc=True) event3 = create_event(start_date=(2014, 5, 2), end_date=(2014, 5, 4), created_by=user, title="gnarly", description="Testing 1 2 3", repeat="NEVER", utc=True) event4 = create_event(start_date=(2014, 4, 2), end_date=(2014, 4, 4), created_by=user, title="tubular", description="Testing 1 2 3", repeat="WEEKLY", end_repeat=date(2014, 5, 2), utc=True) event.save() event2.save() event3.save() event4.save() now = make_aware(datetime(2014, 5, 6), utc) events = Event.objects.live(now) self.assertEqual(len(events), 2) self.assertEqual(events[0].title, event.title) self.assertEqual(events[0].pk, event.pk) self.assertEqual(events[1].title, event2.title) self.assertEqual(events[1].pk, event2.pk)
def test_chunk_fill_out_first_week_stops_on_end_repeat(self): event = create_event(start_date=(2014, 4, 30), end_date=(2014, 5, 4), created_by=self.user, title="event", description="Testing 1 2 3", repeat="MONTHLY", end_repeat=date(2014, 5, 2), utc=True) c = h._chunk_fill_out_first_week(self.year, self.month, self.counter, event, event.get_start_end_diff()) self.assertEqual(len(c), 1)
def test_repeat_weekdays_day_out_of_range(self): """Should return unchanged dict.""" day = 32 end_repeat = None event = create_event(start_date=(2014, 5, 28), end_date=(2014, 5, 28), created_by=self.user, title="event", description="Testing 1 2 3", repeat="WEEKDAY", utc=True) c = h.Repeater(self.counter, self.year, self.month, day, end_repeat, event).repeat() self.assertEqual(len(c), 0)
def test_chunk_fill_out_first_week_stops_on_end_repeat(self): event = create_event( start_date=(2014, 4, 30), end_date=(2014, 5, 4), created_by=self.user, title="event", description="Testing 1 2 3", repeat="MONTHLY", end_repeat=date(2014, 5, 2), utc=True ) c = h._chunk_fill_out_first_week( self.year, self.month, self.counter, event, event.start_end_diff() ) self.assertEqual(len(c), 1)
def test_repeat_weekdays_day_out_of_range(self): """Should return unchanged dict.""" day = 32 end_repeat = None event = create_event( start_date=(2014, 5, 28), end_date=(2014, 5, 28), created_by=self.user, title="event", description="Testing 1 2 3", repeat="WEEKDAY", ) c = h.Repeater( self.counter, self.year, self.month, day, end_repeat, event ).repeat() self.assertEqual(len(c), 0)
def test_repeat_weekdays_count_first_day(self): """Should return dict w/ first day counted.""" day = 28 end_repeat = date(2014, 7, 7) event = create_event( start_date=(2014, 5, 28), end_date=(2014, 5, 28), created_by=self.user, title="event", description="Testing 1 2 3", repeat="WEEKDAY", ) c = h.DailyRepeater( self.counter, self.year, self.month, day, end_repeat, event, count_first=True ).repeat_it() self.assertEqual(len(c), 3) self.assertEqual(c[28], [('event', event.pk)]) self.assertEqual(c[29], [('event', event.pk)]) self.assertEqual(c[30], [('event', event.pk)])
def test_popover_helper(self): yr = 2014 mo = 5 count = defaultdict(list) event = create_event(start_date=(2014, 5, 15), end_date=(2014, 5, 15), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY") days = (15, 22, 29) [count[day].append((event.title, event.pk)) for day in days] events = [event] cal = MiniEventCalendar(yr, mo, count, events) cal.event = event for day in days: cal.title = event.title cal.day = day cal.popover_helper() self.assertIn(event.title, cal.cal_event)
def test_popover_helper(self): yr = 2014 mo = 5 count = defaultdict(list) event = create_event( start_date=(2014, 5, 15), end_date=(2014, 5, 15), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY" ) days = (15, 22, 29) [count[day].append((event.title, event.pk)) for day in days] events = [event] cal = MiniEventCalendar(yr, mo, count, events) cal.event = event for day in days: cal.title = event.title cal.day = day cal.popover_helper() self.assertIn(event.title, cal.cal_event)
def test_repeat_weekdays_count_first_day(self): """Should return dict w/ first day counted.""" day = 28 end_repeat = date(2014, 7, 7) event = create_event(start_date=(2014, 5, 28), end_date=(2014, 5, 28), created_by=self.user, title="event", description="Testing 1 2 3", repeat="WEEKDAY", utc=True) c = h.DailyRepeater(self.counter, self.year, self.month, day, end_repeat, event, count_first=True).repeat_it() self.assertEqual(len(c), 3) self.assertEqual(c[28], [('event', event.pk)]) self.assertEqual(c[29], [('event', event.pk)]) self.assertEqual(c[30], [('event', event.pk)])
def test_location(self): """ Test that, if an event has a location associated with it, it gets set when popover_helper() is called (the event location only appears in the popover on the month calendar view page). """ yr = 2014 mo = 5 count = defaultdict(list) event = create_event( start_date=(2014, 5, 15), end_date=(2014, 5, 15), created_by=self.user, title="Big Event", description="Wow! An event.", repeat="WEEKLY" ) # Test first without a location events = [event] day = 15 count_dict = {day: [(event.title, event.pk)]} cal = EventCalendar(yr, mo, count, events) cal.count = count_dict render_result = cal.formatday(day, 0) self.assertNotIn("Where:", render_result) self.assertNotIn("Heck", render_result) # Test with a location event.location.create( name="Heck" ) events = [event] cal2 = EventCalendar(yr, mo, count, events) cal2.count = count_dict render_result = cal2.formatday(day, 0) self.assertIn("Where:", render_result) self.assertIn("Heck", render_result)