Esempio n. 1
0
    def test_is_valid(self):
        tw = TimeWindow(start_time=dtime, end_time=dtime)
        assert tw.validate() is None
        assert jsonify(tw) == '{"timeFrom": "2014-12-05T08:00", ' \
                              '"timeTo": "2014-12-05T08:00"}'

        assert TimeWindowValidator.validate(dictify(tw)) is None
Esempio n. 2
0
    def test_is_valid(self):
        tw = TimeWindow(start_time=dtime, end_time=dtime)
        assert tw.validate() is None
        assert jsonify(tw) == '{"timeFrom": "2014-12-05T08:00", ' \
                              '"timeTo": "2014-12-05T08:00"}'

        assert TimeWindowValidator.validate(dictify(tw)) is None
Esempio n. 3
0
    def orders(self):
        order1 = Order('3', 5.2, 6.1, 7)
        order1.time_window = TimeWindow(start_time=dtime, end_time=dtime)
        order1.skills = ['handy', 'quiet']
        order1.assigned_to = 'Tom & Jerry'
        order1.scheduling_info = SchedulingInfo(scheduled_at=dtime,
                                                scheduled_driver='rantanplan')

        order2 = Order('4', 5.2, 6.1, 7)
        order2.time_window = TimeWindow(start_time=dtime, end_time=dtime)
        order2.skills = ['barista', 'terrorista']
        order2.assigned_to = 'Sam & Max'
        order2.scheduling_info = SchedulingInfo(scheduled_at=dtime,
                                                scheduled_driver='rantanplan')
        return order1, order2
Esempio n. 4
0
    def test_skills(self, cls_name):
        order = Order(id='3', lat=5.2, lng=6.1, duration=7)
        order.time_window = TimeWindow(dtime, dtime)
        order.skills = 'handy'
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'skills', (list, tuple), str)
        assert err_msg == str(excinfo.value)

        order = Order(id='3', lat=5.2, lng=6.1, duration=7)
        order.time_window = TimeWindow(dtime, dtime)
        order.skills = ['handy', 3]
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = "'{}.skills' must contain elements of type str".format(
            cls_name)
        assert err_msg == str(excinfo.value)
Esempio n. 5
0
    def test_priority(self, cls_name):
        order = Order(id='3', lat=5.2, lng=6.1, duration=7)
        order.time_window = TimeWindow(start_time=dtime, end_time=dtime)
        order.priority = 3
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'priority', basestring, int)
        assert err_msg == str(excinfo.value)

        order = Order(id='3', lat=5.2, lng=6.1, duration=7)
        order.time_window = TimeWindow(dtime, dtime)
        order.priority = 'F'
        with pytest.raises(ValueError) as excinfo:
            order.validate()
        err_msg = "'{}.{}' must be one of {}".format(cls_name, 'priority',
                                                     "('L', 'M', 'H', 'C')")
        assert err_msg == str(excinfo.value)
Esempio n. 6
0
 def test_scheduling_info(self, cls_name):
     order = Order(id='3', lat=5.2, lng=6.1, duration=7)
     order.time_window = TimeWindow(dtime, dtime)
     order.skills = ['handy', 'quiet']
     order.assigned_to = 'Tom & Jerry'
     order.scheduling_info = 45
     with pytest.raises(TypeError) as excinfo:
         order.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'scheduling_info',
                                   SchedulingInfo, int)
     assert err_msg == str(excinfo.value)
Esempio n. 7
0
    def test_is_valid(self):
        ws = WorkShift(start_work=dtime, end_work=dtime)
        ws.allowed_overtime = 2
        assert ws.validate() is None

        ws = WorkShift(start_work=dtime, end_work=dtime)
        ws.allowed_overtime = 2
        ws.break_ = Break(earliest_start=dtime, latest_start=dtime, duration=5)
        ws.unavailable_times = [TimeWindow(start_time=dtime, end_time=dtime)]
        assert ws.validate() is None
        assert jsonify(ws) == (
            '{"workTimeFrom": "2014-12-05T08:00", "break": {"breakStartTo": '
            '"2014-12-05T08:00", "breakStartFrom": "2014-12-05T08:00", '
            '"breakDuration": 5}, "unavailableTimes": [{"timeFrom": '
            '"2014-12-05T08:00", "timeTo": "2014-12-05T08:00"}], "workTimeTo": '
            '"2014-12-05T08:00", "allowedOvertime": 2}')

        assert WorkShiftValidator.validate(dictify(ws)) is None
Esempio n. 8
0
 def test_is_valid(self):
     order = Order(id='3', lat=5.2, lng=6.1, duration=7)
     order.time_window = TimeWindow(start_time=dtime, end_time=dtime)
     order.skills = ['handy', 'quiet']
     order.assigned_to = Driver(id='Tom & Jerry',
                                start_lat=3,
                                start_lng=4,
                                end_lat=5,
                                end_lng=6)
     order.scheduling_info = SchedulingInfo(scheduled_at=dtime,
                                            scheduled_driver='rantanplan')
     assert order.validate() is None
     assert jsonify(order) == (
         '{"assignedTo": "Tom & Jerry", "skills": ["handy", "quiet"], "tw": '
         '{"timeFrom": "2014-12-05T08:00", "timeTo": "2014-12-05T08:00"}, '
         '"lon": 6.1, "priority": "M", "duration": 7, "lat": 5.2, '
         '"schedulingInfo": {"scheduledAt": "2014-12-05T08:00", "locked": '
         'false, "scheduledDriver": "rantanplan"}, "id": "3"}')
     assert OrderValidator.validate(dictify(order)) is None
Esempio n. 9
0
    def test_assigned_to(self, cls_name):
        order = Order(id='3', lat=5.2, lng=6.1, duration=7)
        order.time_window = TimeWindow(dtime, dtime)
        order.skills = ['handy', 'quiet']
        order.assigned_to = 4
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'assigned_to',
                                      (basestring, Driver), int)
        assert err_msg == str(excinfo.value)

        # test it accepts a string as a driver
        order.assigned_to = 'rantanplan'
        assert order.validate() is None

        # test it accepts a driver objects too
        drv = Driver(id='3', start_lat=3, start_lng=4, end_lat=4, end_lng=5)
        order.assigned_to = drv
        assert order.validate() is None
Esempio n. 10
0
 def test_end_time(self, cls_name):
     tw = TimeWindow(start_time=dtime, end_time=3)
     with pytest.raises(TypeError) as excinfo:
         tw.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'end_time', datetime, int)
     assert err_msg == str(excinfo.value)
Esempio n. 11
0
 def test_end_time(self, cls_name):
     tw = TimeWindow(start_time=dtime, end_time=3)
     with pytest.raises(TypeError) as excinfo:
         tw.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'end_time', datetime, int)
     assert err_msg == str(excinfo.value)