def test_simple(self): """Test we can assign slots to a Block that spans only few hours.""" block1 = ScheduleBlock.objects.create( start_time=D.datetime(2013, 9, 22, 9, 0, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 22, 19, 0, 0, tzinfo=timezone.utc)) slot1 = Slot(start_time=D.datetime(2013, 9, 22, 9, 0, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 22, 10, 20, 0, tzinfo=timezone.utc)) self.assertEqual(slot1.get_block(), block1) self.assertEqual(slot1.get_duration(), {'hours': 1, 'minutes': 20}) # Check end and start times slot2 = Slot(start_time=D.datetime(2013, 9, 22, 12, 0, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 22, 13, 0, 0, tzinfo=timezone.utc)) slot3 = Slot(start_time=D.datetime(2013, 9, 22, 18, 30, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 22, 19, 0, 0, tzinfo=timezone.utc)) self.assertEqual(slot2.get_block(), block1) self.assertEqual(slot2.get_duration(), {'hours': 1, 'minutes': 0}) self.assertEqual(slot3.get_block(), block1) self.assertEqual(slot3.get_duration(), {'hours': 0, 'minutes': 30}) block1.delete()
def test_save_model_new_additional(self): """Test save_model changing a new slot with some additional slots""" slot = Slot(start_time=D.datetime(2013, 9, 22, 11, 0, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 22, 11, 30, 0, tzinfo=timezone.utc)) # check that it's not saved in the database self.assertEqual(Slot.objects.count(), 0) request = HttpRequest() dummy = make_dummy_form(3) self.admin.save_model(request, slot, dummy, False) self.assertEqual(Slot.objects.count(), 4) # check the hierachy is created correctly slot1 = Slot.objects.filter(previous_slot=slot).get() self.assertEqual(slot1.get_start_time(), slot.end_time) self.assertEqual(slot1.end_time, D.datetime(2013, 9, 22, 12, 0, 0, tzinfo=timezone.utc)) slot2 = Slot.objects.filter(previous_slot=slot1).get() self.assertEqual(slot2.get_start_time(), slot1.end_time) self.assertEqual(slot2.end_time, D.datetime(2013, 9, 22, 12, 30, 0, tzinfo=timezone.utc)) self.assertEqual(slot2.get_block(), slot.get_block()) self.assertEqual(slot2.previous_slot, slot1) slot3 = Slot.objects.filter(previous_slot=slot2).get() self.assertEqual(slot3.get_start_time(), slot2.end_time) self.assertEqual(slot3.end_time, D.datetime(2013, 9, 22, 13, 00, 0, tzinfo=timezone.utc)) self.assertEqual(slot3.get_block(), slot.get_block()) self.assertEqual(slot3.previous_slot, slot2) # repeat checks with a different length of slot slot = Slot(previous_slot=slot3, end_time=D.datetime(2013, 9, 22, 14, 30, 0, tzinfo=timezone.utc)) dummy = make_dummy_form(4) self.admin.save_model(request, slot, dummy, False) self.assertEqual(Slot.objects.count(), 9) slot1 = Slot.objects.filter(previous_slot=slot).get() self.assertEqual(slot1.get_start_time(), slot.end_time) self.assertEqual(slot1.end_time, D.datetime(2013, 9, 22, 16, 0, 0, tzinfo=timezone.utc)) slot2 = Slot.objects.filter(previous_slot=slot1).get() self.assertEqual(slot2.get_start_time(), slot1.end_time) self.assertEqual(slot2.end_time, D.datetime(2013, 9, 22, 17, 30, 0, tzinfo=timezone.utc)) self.assertEqual(slot2.get_block(), slot.get_block()) self.assertEqual(slot2.previous_slot, slot1) slot3 = Slot.objects.filter(previous_slot=slot2).get() self.assertEqual(slot3.get_start_time(), slot2.end_time) self.assertEqual(slot3.end_time, D.datetime(2013, 9, 22, 19, 00, 0, tzinfo=timezone.utc)) self.assertEqual(slot3.get_block(), slot.get_block()) slot4 = Slot.objects.filter(previous_slot=slot3).get() self.assertEqual(slot4.get_start_time(), slot3.end_time) self.assertEqual(slot4.end_time, D.datetime(2013, 9, 22, 20, 30, 0, tzinfo=timezone.utc)) self.assertEqual(slot4.get_block(), slot.get_block())
def test_midnight(self): """Test that we can assign slots that span midnight to a block that spans midnight.""" block1 = ScheduleBlock.objects.create( start_time=D.datetime(2013, 9, 22, 9, 0, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 23, 8, 0, 0, tzinfo=timezone.utc)) slot1 = Slot(start_time=D.datetime(2013, 9, 22, 23, 0, 0, tzinfo=timezone.utc), end_time=D.datetime(2013, 9, 23, 1, 0, 0, tzinfo=timezone.utc)) self.assertEqual(slot1.get_block(), block1) self.assertEqual(slot1.get_duration(), {'hours': 2, 'minutes': 0}) block1.delete()