コード例 #1
0
ファイル: tests.py プロジェクト: studentisgss/booking
    def test_different_day_events_rejected(self):
        """ Test that events with start and end time in different days are rejected """
        # Event longer than 24 hours
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 17, 0),
                end=default_datetime(2016, 5, 4, 19, 0),
                creator=self.user
            )
            event.clean()

        # Event shorter than 24 hours
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 1, 23, 0),
                end=default_datetime(2016, 5, 2, 1, 0),
                creator=self.user
            )
            event.clean()
コード例 #2
0
ファイル: tests.py プロジェクト: studentisgss/booking
 def setUp(self):
     self.user = User.objects.create_user(username="******")
     self.room = Room.objects.create(name="Room 1", description="", creator=self.user)
     self.room2 = Room.objects.create(name="Room 2", description="", creator=self.user)
     self.activity = Activity.objects.create(
         title="Activity 1",
         description="",
         creator=self.user
     )
     Event.objects.create(
         room=self.room,
         activity=self.activity,
         status=Event.APPROVED,
         start=default_datetime(2016, 5, 3, 14, 0),
         end=default_datetime(2016, 5, 3, 16, 0),
         creator=self.user
     )
     Event.objects.create(
         room=self.room,
         activity=self.activity,
         status=Event.REJECTED,
         start=default_datetime(2016, 5, 2, 14, 0),
         end=default_datetime(2016, 5, 2, 16, 0),
         creator=self.user
     )
コード例 #3
0
ファイル: tests.py プロジェクト: studentisgss/booking
 def test_start_after_end_events_rejected(self):
     """ Test that events with start time greater than end time are rejected """
     with self.assertRaises(ValidationError):
         event = Event(
             room=self.room,
             activity=self.activity,
             status=Event.APPROVED,
             start=default_datetime(2016, 5, 3, 19, 0),
             end=default_datetime(2016, 5, 3, 17, 0),
             creator=self.user
         )
         event.clean()
コード例 #4
0
ファイル: tests.py プロジェクト: studentisgss/booking
 def test_waiting_overlapping_events_rejected(self):
     """ Test that waiting overlapping events are rejected """
     with self.assertRaises(ValidationError):
         event = Event(
             room=self.room,
             activity=self.activity,
             status=Event.WAITING,
             start=default_datetime(2016, 5, 3, 12, 00),
             end=default_datetime(2016, 5, 3, 16, 00),
             creator=self.user
         )
         event.clean()
コード例 #5
0
ファイル: tests.py プロジェクト: studentisgss/booking
    def test_approved_overlapping_events_rejected(self):
        """ Test that approved overlapping events are rejected """
        # Overlapping by 1 minute at the end
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 12, 0),
                end=default_datetime(2016, 5, 3, 14, 1),
                creator=self.user
            )
            event.clean()

        # Overlapping by 1 minute at the beginning
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 15, 59),
                end=default_datetime(2016, 5, 3, 17, 0),
                creator=self.user
            )
            event.clean()

        # Completely overlapping, "contained" in another event
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 15, 00),
                end=default_datetime(2016, 5, 3, 15, 30),
                creator=self.user
            )
            event.clean()

        # Completely overlapping, "containing" another event
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 12, 00),
                end=default_datetime(2016, 5, 3, 18, 00),
                creator=self.user
            )
            event.clean()
コード例 #6
0
ファイル: tests.py プロジェクト: studentisgss/booking
    def test_none_date_rejected(self):
        """ Test that none dates are rejected """
        # Start date is none
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.REJECTED,
                start=None,
                end=default_datetime(2016, 5, 3, 12, 0),
                creator=self.user
            )
            event.clean()

        # End date is none
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.REJECTED,
                start=default_datetime(2016, 5, 3, 16, 0),
                end=None,
                creator=self.user
            )
            event.clean()

        # Both dates are none
        with self.assertRaises(ValidationError):
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.REJECTED,
                start=None,
                end=None,
                creator=self.user
            )
            event.clean()
コード例 #7
0
ファイル: views.py プロジェクト: studentisgss/booking
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     # If a date is defined
     if "year" in kwargs and "month" in kwargs and "day" in kwargs:
         try:
             year = int(kwargs["year"])
             month = int(kwargs["month"])
             day = int(kwargs["day"])
         except:
             raise Http404
         # If the year or the month are not valid the function monthrange is not invoked
         # due to shot-circuit evaluation
         if not ((year in range(1, 9999)) and (month in range(1, 12 + 1)) and
                 (day in range(1, monthrange(year, month)[1] + 1))):
             raise Http404
         date = default_datetime(year, month, day)
     else:
         date = localnow().replace(hour=0, minute=0, second=0, microsecond=0)
     context["date"] = date
     context["events"] = Event.objects.filter(
         start__range=(date, date + timedelta(1)),
         status=Event.APPROVED
     )
     return context
コード例 #8
0
ファイル: tests.py プロジェクト: studentisgss/booking
    def test_valid_events_accepted(self):
        """ Test that valid events are not rejected """
        # A rejected overlapping event is ok
        try:
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.REJECTED,
                start=default_datetime(2016, 5, 3, 14, 0),
                end=default_datetime(2016, 5, 3, 16, 0),
                creator=self.user
            )
            event.clean()
        except ValidationError:
            self.fail("ValidationError exception raised with rejected overlapping event")

        # Overlapping with an event in a different room and with the same activity
        try:
            event = Event(
                room=self.room2,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 14, 0),
                end=default_datetime(2016, 5, 3, 16, 0),
                creator=self.user
            )
            event.clean()
        except ValidationError:
            self.fail("ValidationError exception raised with overlapping event in different room")

        # An approved event overlapping with a rejected event
        try:
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 2, 14, 0),
                end=default_datetime(2016, 5, 2, 16, 0),
                creator=self.user
            )
            event.clean()
        except ValidationError:
            self.fail(
                "ValidationError exception raised with event overlapping with a rejected event"
            )

        # Not overlapping, but immediately before another event
        try:
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 12, 0),
                end=default_datetime(2016, 5, 3, 14, 0),
                creator=self.user
            )
            event.clean()
        except ValidationError:
            self.fail("ValidationError exception raised with not overlapping event")

        # Not overlapping, but immediately after another event
        try:
            event = Event(
                room=self.room,
                activity=self.activity,
                status=Event.APPROVED,
                start=default_datetime(2016, 5, 3, 16, 0),
                end=default_datetime(2016, 5, 3, 18, 0),
                creator=self.user
            )
            event.clean()
        except ValidationError:
            self.fail("ValidationError exception raised with not overlapping event")