def test_get_closest_locations_returns_closest_single_location_2(self): stops = [MapLocation(3, 3, 3), MapLocation(4, 4, 4)] address = MapLocation(5, 5, 5) closest = self.generator._get_closest_locations(source=address, destinations=stops, n=1) self.assertEqual(MapLocation(4, 4, 4), closest[0], "{}, should be 4, 4".format(closest[0]))
def test_get_closest_locations_returns_location_when_equal(self): stops = [MapLocation(1, 1, 1), MapLocation(3, 3, 3)] address = MapLocation(2, 2, 2) closest = self.generator._get_closest_locations(source=address, destinations=stops, n=1) self.assertEqual(MapLocation(1, 1, 1), closest[0], "{}, should be 1, 1".format(closest[0]))
def test_process_stop_calls_add_route(self): self.generator.wrapper.get_distance_from_api = \ Mock(return_value={"distance": 6, "time": 9}) self.generator.handler.add_route = Mock() self.generator.process_stop(address=MapLocation(3, 3, 3), stop=MapLocation(4, 4, 4), verbose=False) self.generator.handler.add_route.assert_called_once_with(3, 4, 6, 9)
def test_process_stop_calls_get_distance_from_api(self): mock_get_distance = Mock(return_value={"distance": 6, "time": 9}) self.generator.wrapper.get_distance_from_api = mock_get_distance self.generator.handler.add_route = Mock() address = MapLocation(1, 1, 1) stop = MapLocation(2, 2, 2) self.generator.process_stop(address=address, stop=stop, verbose=False) mock_get_distance.assert_called_once_with(address, stop, 'walking')
def test_begin_calls_get_closest_locations(self): addresses = MapLocation(1, 1, 1) self.generator.handler.get_address_generator = \ MagicMock(return_value=[addresses]) self.generator.stops = [MapLocation(2, 2, 2), MapLocation(3, 3, 3)] mock_get_closest_locations = Mock( return_value=[self.generator.stops[0]]) self.generator._get_closest_locations = mock_get_closest_locations self.generator.wrapper.get_distance_from_api = \ Mock(return_value={"distance": 6, "time": 9}) self.generator.handler.add_route = Mock() self.generator.begin(stops_per_address=1, verbose=False) mock_get_closest_locations.assert_called_once_with( addresses, self.generator.stops, n=1)
def test_begin_doesnt_call_add_route_if_MapboxAPIError_occurs(self): addresses = MapLocation(1, 1, 1) self.generator.handler.get_address_generator = \ MagicMock(return_value=[addresses]) self.generator.wrapper.get_distance_from_api = Mock() self.generator.stops = [MapLocation(2, 2, 2)] self.generator._get_closest_locations = \ Mock(return_value=[self.generator.stops[0]]) # force get_distance_from_api to raise a MapboxAPIError exception self.generator.wrapper.get_distance_from_api.\ side_effect = MapboxAPIError("API Error") mock_add_route = Mock() self.generator.handler.add_route = mock_add_route self.generator.begin(stops_per_address=1, verbose=False) mock_add_route.assert_not_called()
def test_begin_calls_process_stop_for_each_stop(self): address = MapLocation(1, 1, 1) self.generator.handler.get_address_generator = \ MagicMock(return_value=[address]) stops = [MapLocation(2, 2, 2), MapLocation(3, 3, 3)] mock_get_closest_locations = Mock(return_value=stops) self.generator._get_closest_locations = mock_get_closest_locations mock_process_stop = Mock() self.generator.process_stop = mock_process_stop self.generator.begin(stops_per_address=2, verbose=False) self.assertEqual(2, mock_process_stop.call_count) expected_calls = [ mock.call(address, stops[0], False, 'walking'), mock.call(address, stops[1], False, 'walking') ] self.assertEqual(expected_calls, mock_process_stop.call_args_list)
def test_get_closest_locations_returns_closest_2_locations(self): stops = [ MapLocation(1, 1, 1), MapLocation(5, 5, 5), MapLocation(6, 6, 6) ] address = MapLocation(4, 4, 4) closest = self.generator._get_closest_locations(source=address, destinations=stops, n=2) self.assertEqual(MapLocation(5, 5, 5), closest[0], "{}, should be 5, 5".format(closest[0])) self.assertEqual(MapLocation(6, 6, 6), closest[1], "{}, should be 6, 6".format(closest[1]))