コード例 #1
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
 def test_time_window(self, cls_name):
     order = Order(id='3', lat=5.2, lng=6.1, duration=7)
     order.time_window = 'Foo'
     with pytest.raises(TypeError) as excinfo:
         order.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'time_window', TimeWindow, str)
     assert err_msg == str(excinfo.value)
コード例 #2
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
 def test_time_window(self, cls_name):
     order = Order(id='3', lat=5.2, lng=6.1, duration=7)
     order.time_window = 'Foo'
     with pytest.raises(TypeError) as excinfo:
         order.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'time_window', TimeWindow, str)
     assert err_msg == str(excinfo.value)
コード例 #3
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
    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
コード例 #4
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
    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)
コード例 #5
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
    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)
コード例 #6
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
    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
コード例 #7
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
 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)
コード例 #8
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
    def test_duration(self, cls_name):
        order = Order(id='3', lat=5, lng=6, duration='7')
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'duration', (int, long), str)
        assert err_msg == str(excinfo.value)

        order = Order(id='3', lat=5, lng=6, duration=-1)
        with pytest.raises(ValueError) as excinfo:
            order.validate()
        err_msg = "'{}.duration' cannot be negative".format(cls_name)
        assert err_msg == str(excinfo.value)
コード例 #9
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
    def test_id(self, cls_name):
        order = Order(id=3, lat=5, lng=6, duration=7)
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'id', str, int)
        assert err_msg == str(excinfo.value)

        order = Order(id='', lat='5', lng='6', duration='7')
        with pytest.raises(ValueError) as excinfo:
            order.validate()
        err_msg = "'{}.{}' cannot be empty".format(cls_name, 'id')
        assert err_msg == str(excinfo.value)
コード例 #10
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
 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)
コード例 #11
0
def route_plan():
    from decimal import Decimal

    d1 = datetime.datetime(year=2014, month=12, day=5, hour=8, minute=0)
    d2 = datetime.datetime(year=2014, month=12, day=5, hour=14, minute=0)
    ws = WorkShift(d1, d2)

    drv = Driver('123', Decimal('53.350046'), Decimal('-6.274655'),
                 Decimal('53.341191'), Decimal('-6.260402'))
    drv.work_shifts.append(ws)

    order1 = Order('123', Decimal('53.343204'), Decimal('-6.269798'), 20)
    order2 = Order('456', Decimal('53.341820'), Decimal('-6.264991'), 25)

    routeplan = RoutePlan(
        request_id='4321',
        callback_url='https://callback.com/1234',
        status_callback_url='https://status.callback.com/1234')
    routeplan.drivers.append(drv)
    routeplan.orders.append(order1)
    routeplan.orders.append(order2)
    return routeplan
コード例 #12
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
 def test_orders_assigned_to(self, orders, drivers, routeplan):
     order = Order(id='new_order',
                   lat=3,
                   lng=4,
                   duration=5,
                   assigned_to="New Driver")
     routeplan.orders = list(orders)
     # add the new order with the new and unknown driver
     routeplan.orders.append(order)
     routeplan.drivers = list(drivers)
     with pytest.raises(OptimoValidationError) as excinfo:
         routeplan.validate()
     err_msg = ("The order with id: 'new_order' is assigned to driver with "
                "id: 'New Driver' that is not present in 'drivers' list")
     assert err_msg == str(excinfo.value)
コード例 #13
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
    def test_duration(self, cls_name):
        order = Order(id='3', lat=5, lng=6, duration='7')
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'duration', (int, long), str)
        assert err_msg == str(excinfo.value)

        order = Order(id='3', lat=5, lng=6, duration=-1)
        with pytest.raises(ValueError) as excinfo:
            order.validate()
        err_msg = "'{}.duration' cannot be negative".format(cls_name)
        assert err_msg == str(excinfo.value)
コード例 #14
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
    def test_id(self, cls_name):
        order = Order(id=3, lat=5, lng=6, duration=7)
        with pytest.raises(TypeError) as excinfo:
            order.validate()
        err_msg = TYPE_ERR_MSG.format(cls_name, 'id', str, int)
        assert err_msg == str(excinfo.value)

        order = Order(id='', lat='5', lng='6', duration='7')
        with pytest.raises(ValueError) as excinfo:
            order.validate()
        err_msg = "'{}.{}' cannot be empty".format(cls_name, 'id')
        assert err_msg == str(excinfo.value)
コード例 #15
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
 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
コード例 #16
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
 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
コード例 #17
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
    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
コード例 #18
0
ファイル: test_models.py プロジェクト: fieldaware/optimoroute
 def test_lng(self, cls_name):
     order = Order(id='3', lat=5, lng='6', duration='7')
     with pytest.raises(TypeError) as excinfo:
         order.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'lng', Number, str)
     assert err_msg == str(excinfo.value)
コード例 #19
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
    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
コード例 #20
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
    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)
コード例 #21
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
    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)
コード例 #22
0
ファイル: test_models.py プロジェクト: bentocart/optimoroute
 def test_lng(self, cls_name):
     order = Order(id='3', lat=5, lng='6', duration='7')
     with pytest.raises(TypeError) as excinfo:
         order.validate()
     err_msg = TYPE_ERR_MSG.format(cls_name, 'lng', Number, str)
     assert err_msg == str(excinfo.value)