Example #1
0
 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()
Example #2
0
    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())
Example #3
0
 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()