def _setUpVeterisSubsite(self): main = getPage("/home/") home = Page(slug="veteris", title="Veteris Council") main.add_child(instance=home) home.save_revision().publish() activities = Page(slug="activities", title="Veteris Calendar") home.add_child(instance=activities) activities.save_revision().publish() Site.objects.create(hostname='veteris.joy.test', root_page_id=home.id, is_default_site=False) events = CalendarPage(owner=self.user, slug="veteris-events", title="Veteris Events") home.add_child(instance=events) events.save_revision().publish() committee = RecurringEventPage(owner=self.user, slug="veteris-committee", title="Committee Meeting", repeat=Recurrence( dtstart=dt.date(1970, 1, 5), freq=MONTHLY, byweekday=[MO], until=dt.date(1978, 8, 7)), time_from=dt.time(14), time_to=dt.time(15)) events.add_child(instance=committee) committee.save_revision().publish()
class TestMultiday(TestCase): def setUp(self): self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') self.calendar = CalendarPage(owner=self.user, slug="schedule", title="Schedule") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = MultidayRecurringEventPage( slug="test-session", title="Test Session", repeat=Recurrence(dtstart=dt.date(2018, 1, 8), freq=WEEKLY, byweekday=[MO], until=dt.date(2018, 4, 25)), num_days=3, time_from=dt.time(10), time_to=dt.time(12, 30)) self.calendar.add_child(instance=self.event) self.info = ExtraInfoPage(owner=self.user, overrides=self.event, except_date=dt.date(2018, 2, 12), extra_title="System Demo", extra_information="<h3>System Demo</h3>") self.event.add_child(instance=self.info) self.info.save_revision().publish() def testStatusFinished(self): self.assertEqual(self.info.status, "finished") self.assertEqual(self.info.status_text, "This event has finished.") @freeze_timetz("2018-02-13 14:00:00") def testStatusStarted(self): self.assertEqual(self.info.status, "started") self.assertEqual(self.info.status_text, "This event has started.") def testWhen(self): self.assertEqual( self.info.when, "Monday 12th of February 2018 for 3 days " "starting at 10am finishing at 12:30pm") def testAt(self): self.assertEqual(self.info.at.strip(), "10am") @freeze_timetz("2018-02-13 17:00:00") def testCurrentDt(self): self.assertEqual(self.info._current_datetime_from, datetimetz(2018, 2, 12, 10, 0)) @freeze_timetz("2018-02-13 14:00:00") def testFutureDt(self): self.assertIsNone(self.info._future_datetime_from) def testPastDt(self): self.assertEqual(self.info._past_datetime_from, datetimetz(2018, 2, 12, 10, 0))
class TestTZ(TestCase): def setUp(self): self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') self.calendar = CalendarPage(owner=self.user, slug="events", title="Events") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = RecurringEventPage(slug="test-meeting", title="Test Meeting", repeat=Recurrence( dtstart=dt.date(1989, 1, 1), freq=WEEKLY, byweekday=[MO, WE, FR]), time_from=dt.time(13, 30), time_to=dt.time(16), tz=pytz.timezone("US/Eastern")) self.calendar.add_child(instance=self.event) self.cancellation = CancellationPage( owner=self.user, overrides=self.event, except_date=dt.date(1989, 2, 1), cancellation_title="Meeting Cancelled", cancellation_details="Cancelled due to lack of interest") self.event.add_child(instance=self.cancellation) self.cancellation.save_revision().publish() @timezone.override("Australia/Sydney") @freeze_timetz("1989-02-02T06:00:00+11:00") def testCurrentLocalDt(self): when = self.cancellation._current_datetime_from self.assertEqual(when.tzinfo.zone, "Australia/Sydney") self.assertEqual(when.time(), dt.time(5, 30)) self.assertEqual(when.date(), dt.date(1989, 2, 2)) @timezone.override("Australia/Sydney") @freeze_timetz("1989-02-02T06:00:00+11:00") def testFutureLocalDt(self): when = self.cancellation._future_datetime_from self.assertIsNone(when) @timezone.override("Australia/Sydney") def testPastLocalDt(self): when = self.cancellation._past_datetime_from self.assertEqual(when.tzinfo.zone, "Australia/Sydney") self.assertEqual(when.time(), dt.time(5, 30)) self.assertEqual(when.date(), dt.date(1989, 2, 2)) @timezone.override("Australia/Sydney") @freeze_timetz("1989-10-01T21:00:00+11:00") def testCopyFieldsFromParent(self): self.assertEqual(self.event.next_date, dt.date(1989, 10, 3)) cancellation = CancellationPage(owner=self.user) cancellation._copyFieldsFromParent(self.event) self.assertEqual(cancellation.overrides, self.event) self.assertEqual(cancellation.except_date, dt.date(1989, 10, 2))
class TestPageFormDeutsche(TestCase): Form = ExtraInfoPage.get_edit_handler().get_form_class() def setUp(self): translation.activate('de') self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') self.calendar = CalendarPage(owner=self.user, slug="ereignisse", title="Ereignisse") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = RecurringEventPage(slug="meeting", title="Testen Sie Meeting", repeat=Recurrence( dtstart=dt.date(1988, 1, 1), freq=WEEKLY, byweekday=[MO, WE, FR]), time_from=dt.time(13), time_to=dt.time(15, 30)) self.calendar.add_child(instance=self.event) self.info = ExtraInfoPage(owner=self.user, overrides=self.event, except_date=dt.date(1999, 1, 5), extra_title="Freitag", extra_information="Besonderer Freitag") self.event.add_child(instance=self.info) self.info.save_revision().publish() def tearDown(self): translation.deactivate() def testExceptionAlreadyExists(self): page = ExtraInfoPage(owner=self.user) form = self.Form( { 'overrides': self.event, 'except_date': "1999-01-05", 'extra_title': "Es ist Freitag", 'extra_information': rich_text("Besonderer spezieller Freitag") }, instance=page, parent_page=self.event) self.assertFalse(form.is_valid()) self.assertDictEqual( form.errors, { 'except_date': ['Dieses Datum enthält bereits zusätzliche information'] })
def setUp(self): translation.activate('fr') self.user = User.objects.create_superuser('i', '*****@*****.**', 's3(r3t') calendar = CalendarPage(owner=self.user, slug="calendrier", title="Calendrier") Page.objects.get(slug='home').add_child(instance=calendar) calendar.save_revision().publish() event = SimpleEventPage(owner=self.user, slug="plantation-d-arbres", title="Plantation d'arbres", date=dt.date(2011, 6, 5), time_from=dt.time(9, 30), time_to=dt.time(11, 0)) calendar.add_child(instance=event) event.save_revision().publish()
def setUp(self): self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') calendar = CalendarPage(owner=self.user, slug="events", title="Events", default_view="L") Page.objects.get(slug='home').add_child(instance=calendar) calendar.save_revision().publish() event = SimpleEventPage(owner=self.user, slug="tree-planting", title="Tree Planting", date=dt.date(2011, 6, 5), time_from=dt.time(9, 30), time_to=dt.time(11, 0)) calendar.add_child(instance=event) event.save_revision().publish()
class TestPageForm(TestCase): Form = ExtraInfoPage.get_edit_handler().get_form_class() def setUp(self): self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') self.calendar = CalendarPage(owner=self.user, slug="events", title="Events") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = RecurringEventPage(slug="test-meeting", title="Test Meeting", repeat=Recurrence( dtstart=dt.date(1988, 1, 1), freq=WEEKLY, byweekday=[MO, WE, FR]), time_from=dt.time(13), time_to=dt.time(15, 30)) self.calendar.add_child(instance=self.event) self.info = ExtraInfoPage(owner=self.user, overrides=self.event, except_date=dt.date(1999, 1, 5), extra_title="Fri-day", extra_information="Special Friday") self.event.add_child(instance=self.info) self.info.save_revision().publish() def testExceptionAlreadyExists(self): page = ExtraInfoPage(owner=self.user) form = self.Form( { 'overrides': self.event, 'except_date': "1999-01-05", 'extra_title': "It's Friday", 'extra_information': rich_text("Special Special Friday") }, instance=page, parent_page=self.event) self.assertFalse(form.is_valid()) self.assertDictEqual( form.errors, {'except_date': ['That date already has extra information']})
def testAssimilatedSave(self): user = User.objects.create_user('i', '*****@*****.**', 's3cr3t') calendar = CalendarPage(owner=user, slug="events", title="Events") home = Page.objects.get(slug='home') home.add_child(instance=calendar) calendar.save_revision().publish() event = MEP(owner=user, slug="allnighter", title="All Night", date_from=dt.date(2012, 12, 31), date_to=dt.date(2013, 1, 1), time_from=dt.time(23), time_to=dt.time(3)) calendar.add_child(instance=event) event.save_revision().publish() MEP.base_form_class = NewPageForm Form = MEP.get_edit_handler().get_form_class() form = Form(instance=event, parent_page=calendar) page = form.save() self.assertEqual(page.owner.username, "buck")
class TestTZ(TestCase): def setUp(self): self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t') self.calendar = CalendarPage(owner = self.user, slug = "events", title = "Events") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = RecurringEventPage(owner = self.user, slug = "code-for-boston", title = "Code for Boston", repeat = Recurrence(dtstart=dt.date(2017,1,1), freq=WEEKLY, byweekday=[TU]), time_from = dt.time(19), time_to = dt.time(21,30), tz = pytz.timezone("US/Eastern"), location = "4th Floor, 1 Broadway, Cambridge, MA") self.calendar.add_child(instance=self.event) self.event.save_revision().publish() def testGetEventsByLocalDay(self): events = RecurringEventPage.events.byDay(dt.date(2018,4,1), dt.date(2018,4,30)) self.assertEqual(len(events), 30) evod1 = events[3] self.assertEqual(evod1.date, dt.date(2018,4,4)) self.assertEqual(len(evod1.days_events), 1) self.assertEqual(len(evod1.continuing_events), 0) @freeze_timetz("2017-05-31") def testLocalWhen(self): with timezone.override("America/Los_Angeles"): self.assertEqual(self.event.when, "Tuesdays at 4pm to 6:30pm") with timezone.override("Australia/Perth"): self.assertEqual(self.event.when, "Wednesdays at 7am to 9:30am") @timezone.override("America/Los_Angeles") def testLocalAt(self): self.assertEqual(self.event.at, "4pm") @timezone.override("America/Los_Angeles") def testCurrentLocalDt(self): when = self.event._current_datetime_from self.assertEqual(when.tzinfo.zone, "America/Los_Angeles") self.assertEqual(when.weekday(), calendar.TUESDAY) @timezone.override("America/Los_Angeles") def testFutureLocalDt(self): when = self.event._future_datetime_from self.assertEqual(when.tzinfo.zone, "America/Los_Angeles") self.assertEqual(when.weekday(), calendar.TUESDAY) @timezone.override("Pacific/Auckland") def testPastLocalDt(self): when = self.event._past_datetime_from self.assertEqual(when.tzinfo.zone, "Pacific/Auckland") self.assertEqual(when.weekday(), calendar.WEDNESDAY) @timezone.override("Pacific/Kiritimati") def testExtremeTimeZones(self): lions = RecurringEventPage(owner = self.user, slug = "pago-pago-lions", title = "Pago Pago Lions Club", repeat = Recurrence(dtstart=dt.date(2015,2,1), freq=MONTHLY, byweekday=[TH(1),TH(3)]), time_from = dt.time(23,0), tz = pytz.timezone("Pacific/Pago_Pago"), location = "Lions Den, Tafuna, PagoPago", website = "http://www.lionsclubs.org.nz") self.calendar.add_child(instance=lions) self.assertEqual(lions.when, "The Saturday after the first Thursday and " "Saturday after the third Thursday of the month at 12am")
class Test(TestCase): def setUp(self): Site.objects.update(hostname="joy.test") self.user = User.objects.create_user('i', '*****@*****.**', 's3cr3t') self.calendar = CalendarPage(owner = self.user, slug = "events", title = "Events") Page.objects.get(slug='home').add_child(instance=self.calendar) self.calendar.save() self.calendar.save_revision().publish() self.event = RecurringEventPage(owner = self.user, slug = "lug-meetup", title = "Linux Users Group Meetup", repeat = Recurrence(dtstart=dt.date(2017,8,5), freq=MONTHLY, byweekday=[TU(1)]), time_from = dt.time(18,30), time_to = dt.time(20), location = "6 Mackay St, Greymouth (upstairs)") self.calendar.add_child(instance=self.event) self.event.save_revision().publish() def testGetEventsByDay(self): events = RecurringEventPage.events.byDay(dt.date(2017,8,1), dt.date(2017,10,31)) self.assertEqual(len(events), 92) evod = events[35] self.assertEqual(evod.date, dt.date(2017,9,5)) self.assertEqual(len(evod.all_events), 1) self.assertEqual(len(evod.days_events), 1) self.assertEqual(len(evod.continuing_events), 0) def testStatus(self): pastEvent = RecurringEventPage(owner = self.user, slug = "past", title = "Past Event", repeat = Recurrence(dtstart=dt.date(2008,2,1), until=dt.date(2008,5,4), freq=WEEKLY, byweekday=[SA,SU])) self.calendar.add_child(instance=pastEvent) self.assertEqual(pastEvent.status, "finished") self.assertEqual(pastEvent.status_text, "These events have finished.") now = timezone.localtime() earlier = now - dt.timedelta(hours=1) if earlier.date() != now.date(): earlier = datetimetz(now.date(), dt.time.min) nowEvent = RecurringEventPage(owner = self.user, slug = "now", title = "Now Event", repeat = Recurrence(dtstart=dt.date(2010,1,1), freq=DAILY), time_from = earlier.time(), time_to = dt.time.max) self.calendar.add_child(instance=nowEvent) self.assertEqual(nowEvent.status, "started") self.assertEqual(nowEvent.status_text, "This event has started.") today = timezone.localdate() notToday = [weekday for weekday in EVERYWEEKDAY if weekday.weekday != today.weekday()] pastAndFutureEvent = RecurringEventPage(owner = self.user, slug = "not-today", title = "Any day but today", repeat = Recurrence(dtstart=dt.date(2009,8,7), freq=WEEKLY, byweekday=notToday)) self.calendar.add_child(instance=pastAndFutureEvent) self.assertIsNone(pastAndFutureEvent.status) self.assertEqual(pastAndFutureEvent.status_text, "") @freeze_timetz("2008-05-04 09:01") def testJustFinishedStatus(self): event = RecurringEventPage(owner = self.user, slug = "breakfast1", title = "Breakfast-in-bed", repeat = Recurrence(dtstart=dt.date(2008,2,1), until=dt.date(2008,5,9), freq=WEEKLY, byweekday=[SA,SU]), time_from = dt.time(8), time_to = dt.time(9)) self.calendar.add_child(instance=event) self.assertEqual(event.status, "finished") @freeze_timetz("2008-05-04 07:00") def testLastOccurenceCancelledStatus(self): event = RecurringEventPage(owner = self.user, slug = "breakfast2", title = "Breakfast-in-bed", repeat = Recurrence(dtstart=dt.date(2008,2,1), until=dt.date(2008,5,9), freq=WEEKLY, byweekday=[SA,SU]), time_from = dt.time(8), time_to = dt.time(9)) self.calendar.add_child(instance=event) cancellation = CancellationPage(owner = self.user, overrides = event, except_date = dt.date(2008, 5, 4), cancellation_title = "Fire in the kitchen", cancellation_details = "The bacon fat is burning") event.add_child(instance=cancellation) self.assertEqual(event.status, "finished") @freeze_timetz("2008-05-04 12:00") def testPostponementOccurenceLast(self): request = RequestFactory().get("/test") request.user = self.user request.session = {} event = RecurringEventPage(owner = self.user, slug = "breakfast3", title = "Breakfast-in-bed", repeat = Recurrence(dtstart=dt.date(2008,2,1), until=dt.date(2008,5,9), freq=WEEKLY, byweekday=[SA,SU]), time_from = dt.time(8), time_to = dt.time(9)) self.calendar.add_child(instance=event) postponement = PostponementPage(owner = self.user, overrides = event, except_date = dt.date(2008, 5, 3), postponement_title = "Breakfast in Bed owed from May", date = dt.date(2008, 5, 24), time_from = dt.time(8), time_to = dt.time(9)) event.add_child(instance=postponement) self.assertIsNone(event.status) self.assertEqual(event._nextOn(request), '<a class="inline-link" href="/events/breakfast3/2008-05-03-postponement/">Saturday 24th of May at 8am</a>') def testWhen(self): self.assertEqual(self.event.when, "The first Tuesday of the month at 6:30pm to 8pm") def testAt(self): self.assertEqual(self.event.at.strip(), "6:30pm") def testCurrentDt(self): lugDt = self.event._current_datetime_from self.assertEqual(lugDt.time(), dt.time(18,30)) self.assertEqual(lugDt.date().weekday(), 1) self.assertLess(lugDt.date().day, 8) movieNight = RecurringEventPage(owner = self.user, slug = "movies", title = "Movies", repeat = Recurrence(dtstart=dt.date(2005,2,1), freq=WEEKLY, byweekday=[TH,]), time_from = dt.time(20,15), time_to = dt.time(21,30)) self.calendar.add_child(instance=movieNight) now = timezone.localtime() myday = now.date() startTime = dt.time(20,15) if now.time() > startTime: myday += dt.timedelta(days=1) thursday = myday + dt.timedelta(days=(3-myday.weekday())%7) self.assertEqual(movieNight._current_datetime_from, datetimetz(thursday, startTime)) def testFutureDt(self): lugDt = self.event._future_datetime_from self.assertEqual(lugDt.time(), dt.time(18,30)) self.assertEqual(lugDt.date().weekday(), 1) self.assertLess(lugDt.date().day, 8) movieNight = RecurringEventPage(owner = self.user, slug = "movies", title = "Movies", repeat = Recurrence(dtstart=dt.date(2005,2,1), freq=WEEKLY, byweekday=[TH,]), time_from = dt.time(20,15), time_to = dt.time(21,30)) self.calendar.add_child(instance=movieNight) now = timezone.localtime() myday = now.date() startTime = dt.time(20,15) if now.time() > startTime: myday += dt.timedelta(days=1) thursday = myday + dt.timedelta(days=(3-myday.weekday())%7) self.assertEqual(movieNight._future_datetime_from, datetimetz(thursday, startTime)) def testPastDt(self): lugDt = self.event._past_datetime_from self.assertEqual(lugDt.time(), dt.time(18,30)) self.assertEqual(lugDt.date().weekday(), 1) self.assertLess(lugDt.date().day, 8) movieNight = RecurringEventPage(owner = self.user, slug = "movies", title = "Movies", repeat = Recurrence(dtstart=dt.date(2005,2,1), freq=WEEKLY, byweekday=[TH,]), time_from = dt.time(20,15), time_to = dt.time(21,30)) self.calendar.add_child(instance=movieNight) now = timezone.localtime() myday = now.date() startTime = dt.time(20,15) if now.time() < startTime: myday -= dt.timedelta(days=1) thursday = myday - dt.timedelta(days=(myday.weekday()-3)%7) self.assertEqual(movieNight._past_datetime_from, datetimetz(thursday, startTime)) def testGroup(self): self.assertIsNone(self.event.group) def testOccursOn(self): self.assertIs(self.event._occursOn(dt.date(2018,3,6)), True) self.assertIs(self.event._occursOn(dt.date(2018,3,13)), False)
class Test(TestCase): def setUp(self): self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') self.calendar = CalendarPage(owner=self.user, slug="events", title="Events") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = RecurringEventPage(slug="test-meeting", title="Test Meeting", repeat=Recurrence( dtstart=dt.date(1988, 1, 1), freq=WEEKLY, byweekday=[MO, WE, FR]), time_from=dt.time(13), time_to=dt.time(15, 30)) self.calendar.add_child(instance=self.event) self.info = ExtraInfoPage(owner=self.user, overrides=self.event, except_date=dt.date(1988, 11, 11), extra_title="System Demo", extra_information="<h3>System Demo</h3>") self.event.add_child(instance=self.info) self.info.save_revision().publish() def testGetEventsByDay(self): events = RecurringEventPage.events.byDay(dt.date(1988, 11, 1), dt.date(1988, 11, 30)) self.assertEqual(len(events), 30) evod = events[10] self.assertEqual(evod.date, dt.date(1988, 11, 11)) self.assertEqual(len(evod.all_events), 1) self.assertEqual(len(evod.days_events), 1) self.assertEqual(len(evod.continuing_events), 0) title, page, url = evod.days_events[0] self.assertEqual(title, "System Demo") self.assertIs(type(page), ExtraInfoPage) def testStatus(self): self.assertEqual(self.info.status, "finished") self.assertEqual(self.info.status_text, "This event has finished.") now = timezone.localtime() myday = now.date() + dt.timedelta(days=1) friday = myday + dt.timedelta(days=(4 - myday.weekday()) % 7) futureInfo = ExtraInfoPage(owner=self.user, overrides=self.event, except_date=friday, extra_title="It's Friday", extra_information="Special") self.event.add_child(instance=futureInfo) self.assertIsNone(futureInfo.status) self.assertEqual(futureInfo.status_text, "") @freeze_timetz("1988-11-11 14:00:00") def testStatusStarted(self): self.assertEqual(self.info.status, "started") self.assertEqual(self.info.status_text, "This event has started.") def testWhen(self): self.assertEqual(self.info.when, "Friday 11th of November 1988 at 1pm to 3:30pm") def testAt(self): self.assertEqual(self.info.at.strip(), "1pm") def testCurrentDt(self): self.assertIsNone(self.info._current_datetime_from) def testFutureDt(self): self.assertIsNone(self.info._future_datetime_from) def testPastDt(self): self.assertEqual(self.info._past_datetime_from, datetimetz(1988, 11, 11, 13, 0)) def testNeverOccursOn(self): info = ExtraInfoPage(owner=self.user, overrides=self.event, except_date=dt.date(1988, 3, 1), extra_title="Tuesday", extra_information="Standard") self.event.add_child(instance=info) self.assertIsNone(info._current_datetime_from) self.assertIsNone(info._future_datetime_from) self.assertIsNone(info._past_datetime_from) def testGroup(self): self.assertIsNone(self.info.group) def testOverridesRepeat(self): self.assertEqual(self.info.overrides_repeat, self.event.repeat)
class Test(TestCase): def setUp(self): self.home = Page.objects.get(slug='home') self.user = User.objects.create_user('i', '*****@*****.**', 's3(r3t') self.calendar = CalendarPage(owner=self.user, slug="events", title="Events") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = RecurringEventPage(slug="test-meeting", title="Test Meeting", repeat=Recurrence( dtstart=dt.date(1989, 1, 1), freq=WEEKLY, byweekday=[MO, WE, FR]), time_from=dt.time(13), time_to=dt.time(15, 30)) self.calendar.add_child(instance=self.event) self.cancellation = CancellationPage( owner=self.user, overrides=self.event, except_date=dt.date(1989, 2, 1), cancellation_title="Meeting Cancelled", cancellation_details="Cancelled due to lack of interest") self.event.add_child(instance=self.cancellation) self.cancellation.save_revision().publish() def testGetEventsByDay(self): hiddenCancellation = CancellationPage(owner=self.user, overrides=self.event, except_date=dt.date(1989, 2, 13)) self.event.add_child(instance=hiddenCancellation) events = RecurringEventPage.events.byDay(dt.date(1989, 2, 1), dt.date(1989, 2, 28)) self.assertEqual(len(events), 28) evod1 = events[0] self.assertEqual(evod1.date, dt.date(1989, 2, 1)) self.assertEqual(len(evod1.days_events), 1) self.assertEqual(len(evod1.continuing_events), 0) title, page, url = evod1.days_events[0] self.assertEqual(title, "Meeting Cancelled") self.assertIs(type(page), CancellationPage) evod2 = events[12] self.assertEqual(evod2.date, dt.date(1989, 2, 13)) self.assertEqual(len(evod2.days_events), 0) self.assertEqual(len(evod2.continuing_events), 0) def testOccursOn(self): self.assertIs(self.event._occursOn(dt.date(1989, 2, 1)), False) self.assertIs(self.event._occursOn(dt.date(1989, 2, 3)), True) def testUnexplainedCancellation(self): self._cancel_1999_02_08() events = RecurringEventPage.events.byDay(dt.date(1999, 2, 1), dt.date(1999, 2, 28)) self.assertEqual(len(events), 28) evod = events[7] self.assertEqual(evod.date, dt.date(1999, 2, 8)) self.assertEqual(len(evod.days_events), 0) self.assertEqual(len(evod.continuing_events), 0) def testUnexplainedCancellationExplained(self): restriction = self._cancel_1999_02_08() request = RequestFactory().get("/test") request.user = self.user KEY = PageViewRestriction.passed_view_restrictions_session_key request.session = {KEY: [restriction.id]} events = RecurringEventPage.events(request, self.calendar.holidays) \ .byDay(dt.date(1999,2,1), dt.date(1999,2,28)) self.assertEqual(len(events), 28) evod = events[7] self.assertEqual(evod.date, dt.date(1999, 2, 8)) self.assertEqual(len(evod.days_events), 1) self.assertEqual(len(evod.continuing_events), 0) title, page, url = evod.days_events[0] self.assertEqual(title, "Restructure Pending") self.assertIs(type(page), CancellationPage) def _cancel_1999_02_08(self): cancellation = CancellationPage( owner=self.user, overrides=self.event, except_date=dt.date(1999, 2, 8), cancellation_title="Restructure Pending", cancellation_details="Keep it quiet") self.event.add_child(instance=cancellation) PASSWORD = PageViewRestriction.PASSWORD restriction = PageViewRestriction.objects.create( restriction_type=PASSWORD, password="******", page=cancellation) restriction.save() return restriction def testStatus(self): self.assertEqual(self.cancellation.status, "cancelled") self.assertEqual(self.cancellation.status_text, "This event has been cancelled.") now = dt.datetime.now() myday = now.date() + dt.timedelta(1) friday = myday + dt.timedelta(days=(4 - myday.weekday()) % 7) futureCan = CancellationPage(owner=self.user, overrides=self.event, except_date=friday, cancellation_title="", cancellation_details="") self.event.add_child(instance=futureCan) self.assertEqual(futureCan.status, "cancelled") self.assertEqual(futureCan.status_text, "This event has been cancelled.") def testWhen(self): self.assertEqual(self.cancellation.when, "Wednesday 1st of February 1989 at 1pm to 3:30pm") def testWhenEver(self): event = RecurringEventPage(slug="XYZ", title="Xylophone yacht zombies", repeat=Recurrence(dtstart=dt.date( 1989, 1, 1), freq=WEEKLY, byweekday=[FR]), time_from=dt.time(19)) self.calendar.add_child(instance=event) cancellation = CancellationPage(owner=self.user, overrides=event, except_date=dt.date(1989, 3, 10), cancellation_title="Cancelled") event.add_child(instance=cancellation) cancellation.save_revision().publish() self.assertEqual(cancellation.when, "Friday 10th of March 1989 at 7pm") def testAt(self): self.assertEqual(self.cancellation.at.strip(), "1pm") def testCurrentDt(self): self.assertIsNone(self.cancellation._current_datetime_from) def testFutureDt(self): self.assertIsNone(self.cancellation._future_datetime_from) def testPastDt(self): self.assertEqual(self.cancellation._past_datetime_from, datetimetz(1989, 2, 1, 13, 0)) def testNeverOccursOn(self): cancellation = CancellationPage(owner=self.user, overrides=self.event, except_date=dt.date(1989, 2, 7), cancellation_title="Tuesday", cancellation_details="Banner") self.event.add_child(instance=cancellation) self.assertIsNone(cancellation._current_datetime_from) self.assertIsNone(cancellation._future_datetime_from) self.assertIsNone(cancellation._past_datetime_from) def testGroup(self): self.assertIsNone(self.cancellation.group) def testOverridesRepeat(self): self.assertEqual(self.cancellation.overrides_repeat, self.event.repeat) def testGetContext(self): request = RequestFactory().get("/test") context = self.cancellation.get_context(request) self.assertIn('overrides', context)
class TestModelChild(TestCase): def setUp(self) -> None: self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.child = Child.objects.create(first_name='a', last_name='b', father=self.user, mother=self.user2, care_group='P') self.closed = EventCategory.objects.create(code='CL', name='closed') def tearDown(self) -> None: Child.objects.all().delete() User.objects.all().delete() def test_child(self) -> None: self.assertEquals('a', self.child.first_name) def test_child_by_parents_basic(self): self.assertEqual(1, len(Child.get_children_by_user(self.user))) for query_result in Child.get_children_by_user(self.user): self.assertEqual(self.child, query_result) def test_child_by_parent(self): user3 = User.objects.create_user(username='******', email='*****@*****.**', password='******') Child.objects.create(first_name='a', last_name='b', father=user3) self.assertEqual(1, len(Child.get_children_by_user(self.user))) for query_result in Child.get_children_by_user(self.user): self.assertEqual(self.child, query_result) def test_absence(self): absence = Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=10), created_by=self.user) self.assertEqual(absence.child_link, self.child) def test_absence_basic(self): Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=10), created_by=self.user) self.assertEqual(1, len(Absence.get_absence_queryset_by_user(self.user))) for absence in Absence.get_absence_queryset_by_user(self.user): self.assertEqual(absence.child_link, self.child) self.assertEqual( 1, len(Absence.get_open_absence_queryset_by_user(self.user))) def test_absence_by_parent(self): Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=10), created_by=self.user) self.assertEqual(1, len(Absence.get_absence_queryset_by_user(self.user2))) for absence in Absence.get_absence_queryset_by_user(self.user2): self.assertEqual(absence.child_link, self.child) self.assertEqual( 1, len(Absence.get_open_absence_queryset_by_user(self.user2))) def test_absence_only_open(self): Absence.objects.create(child_link=self.child, from_date=date.today() - timedelta(days=10), created_by=self.user) self.assertEqual(1, len(Absence.get_absence_queryset_by_user(self.user))) self.assertEqual( 0, len(Absence.get_open_absence_queryset_by_user(self.user))) Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=10), created_by=self.user, deleted=True) self.assertEqual( 0, len(Absence.get_open_absence_queryset_by_user(self.user))) self.assertEqual(1, len(Absence.get_absence_queryset_by_user(self.user))) def test_absence_ordering(self): Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=10), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date.today(), created_by=self.user) index = 0 for absence in Absence.get_open_absence_queryset_by_user(self.user): index += 1 if index == 1: self.assertEqual(absence.from_date, date.today()) if index == 2: self.assertNotEqual(absence.from_date, date.today()) if index > 2: self.assertFalse(1 == 1, 'more than expected absences in') def test_get_holiday(self): Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=2), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=3), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=1), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date.today(), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=4), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date.today() + timedelta(days=5), created_by=self.user) holidays = Absence.get_holidays(self.user) self.assertEqual(1, len(holidays)) self.assertEqual(holidays[0]['from_date'], date.today()) self.assertEqual(holidays[0]['to_date'], date.today() + timedelta(days=5)) def test_assigments(self): Child.objects.create(first_name='a', last_name='b', father=self.user, care_group='M') Absence.objects.create(child_link=self.child, from_date=date(2019, 12, 17), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date(2019, 12, 18), created_by=self.user) assignments = Child.get_assignments_by_month(12, 2019) self.assertDictEqual(assignments[17 - 1], { 'day': 17, 'M': [], 'G': [], 'P': [self.child] }) self.assertDictEqual(assignments[18 - 1], { 'day': 18, 'M': [], 'G': [], 'P': [self.child] }) self.assertDictEqual(assignments[19 - 1], { 'day': 19, 'M': [], 'G': [], 'P': [] }) groups = Child.get_children_per_care_group() self.assertEqual(1, len(groups['P'])) self.assertEqual(1, len(groups['M'])) self.assertEqual(0, len(groups['G'])) def test_girotondo_month(self): child2 = Child.objects.create(first_name='ab', last_name='bc', father=self.user, care_group='P') Absence.objects.create(child_link=self.child, from_date=date(2019, 12, 17), created_by=self.user) Absence.objects.create(child_link=self.child, from_date=date(2019, 12, 18), created_by=self.user) self.home = self.home = Page.objects.get(slug='home') self.calendar = CalendarPage(owner=self.user, slug="events", title="Events") self.home.add_child(instance=self.calendar) self.calendar.save_revision().publish() self.event = SimpleEventPage(owner=self.user, slug="pet-show", title="Pet Show", category=self.closed, date=date(2019, 12, 23)) self.calendar.add_child(instance=self.event) self.event.save_revision().publish() giro_month = GirotondoMonth(2019, 12) giro_month.holidays.add(date(2019, 12, 24), 'Xmas') self.assertFalse(giro_month.is_girotondo_day(23)) self.assertFalse(giro_month.is_girotondo_day(24)) self.assertFalse(giro_month.is_girotondo_day(22)) self.assertFalse(giro_month.is_girotondo_day(21)) self.assertTrue(giro_month.is_girotondo_day(20)) self.assertEqual(giro_month.get_children_out(17, 'P'), [self.child.first_name + ' ' + self.child.last_name]) self.assertEqual(giro_month.get_children_in(17, 'P'), [child2.first_name + ' ' + child2.last_name]) self.assertEqual(giro_month.get_children_out(12, 'P'), [])