def testOrderedSlots(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") self.assertEquals({}, sched.slots("Friday")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 30), datetime.time(9, 30), "Nine thirty")) sched.add_slot( "Friday", schedule.Slot(datetime.time(8, 30), datetime.time(8, 30), "Eight thirty")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 15), datetime.time(9, 15), "Nine ffiteen")) self.assertEquals([ datetime.time(8, 30), datetime.time(9, 0), datetime.time(9, 15), datetime.time(9, 30) ], sched.orderd_slot_keys("Friday"))
def testAssignments(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.add_slot( "Friday", schedule.Slot(datetime.time(10, 0), datetime.time(10, 30), "Ten")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(10, 0))) sched.add_slot( "Friday", schedule.Slot(datetime.time(11, 0), datetime.time(11, 30), "Elevent")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(11, 0))) sched.assign_talk("Random talk", "Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Random talk", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.assign_talk("Another talk", "Friday", "Track1", datetime.time(10, 0)) self.assertEquals( "Another talk", sched.get_assignment("Friday", "Track1", datetime.time(10, 0))) sched.assign_talk("Last talk", "Friday", "Track1", datetime.time(11, 0)) self.assertEquals( "Last talk", sched.get_assignment("Friday", "Track1", datetime.time(11, 0))) sched.assign_talk( "No such slot - accidentally supported but shouldnt happen talk", "Friday", "Track1", datetime.time(12, 0)) self.assertEquals( "No such slot - accidentally supported but shouldnt happen talk", sched.get_assignment("Friday", "Track1", datetime.time(12, 0))) sched.assign_talk("Allan talk", "Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Allan talk", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(13, 0)))
def test_schedule_to_excel(self, mock_storage_open, mock_sheet_write, mock_merge): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Monday") sched.add_track("Monday", "Software") sched.add_track("Monday", "Hardware") sched.add_slot( "Monday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 30), "Tracks")) sched.add_slot( "Monday", schedule.Slot(datetime.time(10, 0), datetime.time(10, 30), "Plenary")) t = talk.mk_talk(None, "Random talk") sub = submissionrecord.make_submission(t, self.c.key, "Track1", "FormatX") sched.assign_talk(sub.urlsafe(), "Monday", "Hardware", datetime.time(9, 0)) self.assertEquals(0, mock_storage_open.call_count) url = schedexport.schedule_to_excel(sched) self.assertEquals(1, mock_storage_open.call_count) self.assertEquals(8, mock_sheet_write.call_count) self.assertEquals(1, mock_merge.call_count) self.assertEquals( "https:///mimas-aotb.appspot.com.storage.googleapis.com/Schedule", url[0:63]) self.assertEquals(".xlsx", url[len(url) - 5:]) self.assertEquals((0, 2, "Software"), mock_sheet_write.mock_calls[0][1][1:]) self.assertEquals((0, 3, "Hardware"), mock_sheet_write.mock_calls[1][1][1:]) self.assertEquals((1, 0, "09:00"), mock_sheet_write.mock_calls[2][1][1:]) self.assertEquals((1, 1, "09:30"), mock_sheet_write.mock_calls[3][1][1:]) self.assertEquals((1, 2, "Empty"), mock_sheet_write.mock_calls[4][1][1:]) self.assertEquals((1, 3, "Random talk"), mock_sheet_write.mock_calls[5][1][1:]) self.assertEquals((2, 0, "10:00"), mock_sheet_write.mock_calls[6][1][1:]) self.assertEquals((2, 1, "10:30"), mock_sheet_write.mock_calls[7][1][1:]) self.assertEquals((2, 2, 2, 3, "Empty"), mock_merge.mock_calls[0][1][1:])
def add_slot(self): start = datetime.strptime(self.request.get("newSlotStart"), "%H:%M").time() end = datetime.strptime(self.request.get("newSlotEnd"), "%H:%M").time() audience = self.request.get("audiencetype") sched = ndb.Key(urlsafe=self.request.get("sched_key")).get() sched.add_slot(self.request.get("daysList"), schedule.Slot(start, end, audience))
def testSlots(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") self.assertEquals({}, sched.slots("Friday")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 30), "Tracks")) self.assertEquals(1, len(sched.slots("Friday"))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(9, 0))) first_slot = sched.slots("Friday")[datetime.time(9, 0)] self.assertEquals(datetime.time(9, 0), first_slot.start_time) self.assertEquals(datetime.time(9, 30), first_slot.end_time) self.assertEquals("Tracks", first_slot.slot_type) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 30), datetime.time(10, 30), "Plenary")) self.assertEquals(2, len(sched.slots("Friday"))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(9, 30))) second_slot = sched.slots("Friday")[datetime.time(9, 30)] self.assertEquals(datetime.time(9, 30), second_slot.start_time) self.assertEquals(datetime.time(10, 30), second_slot.end_time) self.assertEquals("Plenary", second_slot.slot_type) sched.add_slot( "Friday", schedule.Slot(datetime.time(14, 0), datetime.time(15, 0), "Plenary")) self.assertEquals(3, len(sched.slots("Friday"))) sched.delete_slot_by_start_time("Friday", datetime.time(9, 30)) self.assertEquals(2, len(sched.slots("Friday"))) self.assertFalse(sched.slots("Friday").has_key(datetime.time(9, 30))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(9, 0))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(14, 0)))
def testListAssignedSubmissions(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() self.assertEquals([], sched.get_assigned_submissions()) sched.add_day("Friday") sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) sched.add_slot( "Friday", schedule.Slot(datetime.time(10, 0), datetime.time(10, 30), "Ten")) sched.add_slot( "Friday", schedule.Slot(datetime.time(11, 0), datetime.time(11, 30), "Elevent")) sched.assign_talk("Talk1", "Friday", "Track1", datetime.time(9, 0)) sched.assign_talk("Talk2", "Friday", "Track1", datetime.time(10, 0)) sched.assign_talk("Talk3", "Friday", "Track1", datetime.time(11, 0)) assigned_talks = sched.get_assigned_submissions() assigned_talks.sort() self.assertEquals(["Talk1", "Talk2", "Talk3"], assigned_talks)
def testClearAssignments(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.assign_talk("Random talk", "Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Random talk", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.clear_talk("Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(9, 0)))