コード例 #1
0
ファイル: available.py プロジェクト: mbad/kitabu
    def test_middle_of_period_unavailable_one_place_missing(self):
        reservation = RoomReservation.objects.create(
            subject=self.room3,
            size=1,
            start=datetime(2001, 1, 8),
            end=datetime(2001, 1, 15)
        )  # this reservation will not collide as it has size one, leaving 2 places available

        reservation = RoomReservation.objects.create(
            subject=self.room3,
            size=2,
            start=datetime(2001, 1, 1),
            end=datetime(2001, 1, 8)
        )
        start = datetime(2000, 12, 01)
        end = datetime(2001, 01, 31)
        data = {
            'start': start,
            'end': end,
            'required_duration': timedelta(7),
            'required_size': 2,
            'subject': self.room3,
        }
        searcher = FindPeriod()
        self.assertEqual(
            searcher.search(**data),
            [
                (start, reservation.start),
                (reservation.end, end)
            ]
        )
コード例 #2
0
ファイル: available.py プロジェクト: mbad/kitabu
    def test_period_unavailable(self):
        day = lambda day: datetime(2001, 1, day)
        reserve = lambda start, end, size: RoomReservation.objects.create(
            subject=self.room3,
            size=size,
            start=start,
            end=end
        )

        reserve(day(1), day(4), 3)
        reserve(day(4), day(7), 1)
        reserve(day(6), day(11), 1)
        reserve(day(8), day(15), 2)
        reserve(day(22), day(29), 2)

        start = datetime(2001, 01, 01)
        end = datetime(2001, 01, 31)
        data = {
            'start': start,
            'end': end,
            'required_duration': timedelta(8),
            'required_size': 2,
            'subject': self.room3
        }
        searcher = FindPeriod()
        self.assertEqual(
            searcher.search(**data),
            []
        )
コード例 #3
0
ファイル: available.py プロジェクト: mbad/kitabu
    def test_begin_of_period_unavailable(self):
        reservation_start = datetime(2001, 1, 1)
        reservation_end = datetime(2001, 1, 8)

        preliminary_reservation_start = datetime(2001, 1, 8)
        preliminary_reservation_end = datetime(2001, 1, 14)

        invalid_preliminary_reservation_start = datetime(2001, 1, 14)
        invalid_preliminary_reservation_end = datetime(2001, 1, 20)

        self.room1.reserve(
            size=1,
            start=reservation_start,
            end=reservation_end
        )
        self.room1.reserve(
            size=1,
            start=preliminary_reservation_start,
            end=preliminary_reservation_end,
            valid_until=datetime(2100, 10, 10)
        )
        self.room1.reserve(
            size=1,
            start=invalid_preliminary_reservation_start,
            end=invalid_preliminary_reservation_end,
            valid_until=datetime(1900, 10, 10)
        )

        start = datetime(2001, 01, 01)
        end = datetime(2001, 01, 31)
        data = {
            'start': start,
            'end': end,
            'required_duration': timedelta(7),
            'required_size': 1,
            'subject': self.room1,
        }
        searcher = FindPeriod()
        self.assertEqual(
            searcher.search(**data),
            [(preliminary_reservation_end, end)]
        )
コード例 #4
0
ファイル: available.py プロジェクト: mbad/kitabu
 def test_begin_of_period_unavailable(self):
     reservation = RoomReservation.objects.create(
         subject=self.room1,
         size=1,
         start=datetime(2001, 1, 1),
         end=datetime(2001, 1, 8)
     )
     start = datetime(2001, 01, 01)
     end = datetime(2001, 01, 31)
     data = {
         'start': start,
         'end': end,
         'required_duration': timedelta(7),
         'required_size': 1,
         'subject': self.room1,
     }
     searcher = FindPeriod()
     self.assertEqual(
         searcher.search(**data),
         [(reservation.end, end)]
     )
コード例 #5
0
ファイル: available.py プロジェクト: mbad/kitabu
 def test_whole_period_available_but_with_concurrent_reservation(self):
     RoomReservation.objects.create(
         subject=self.room2,
         size=1,
         start=datetime(2001, 1, 1),
         end=datetime(2001, 1, 8)
     )
     start = datetime(2001, 01, 01)
     end = datetime(2001, 01, 31)
     data = {
         'start': start,
         'end': end,
         'required_duration': timedelta(7),
         'required_size': 1,
         'subject': self.room2,
     }
     searcher = FindPeriod()
     self.assertEqual(
         searcher.search(**data),
         [
             (start, end)
         ]
     )