@iwpnd/valhalla-ts
Version:
A nodejs client and helper utilities for valhalla routing engine
321 lines • 14.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const valhalla_1 = require("./valhalla");
describe('integration', () => {
const valhalla = new valhalla_1.Valhalla();
describe('route', () => {
it('should request a route with maneuvers', async () => {
const start = { lat: 42.530607, lon: 1.570593 };
const end = { lat: 42.534826, lon: 1.579133 };
const costing = 'bicycle';
const request = {
locations: [start, end],
costing,
directions_type: 'maneuvers',
directions_options: {
units: 'kilometers',
},
};
const response = await valhalla.route(request);
expect(response).toEqual({
status_message: 'Found route between points',
status: 0,
units: 'kilometers',
language: 'en-US',
legs: [
{
maneuvers: expect.arrayContaining([
{
begin_shape_index: expect.any(Number),
cost: expect.any(Number),
end_shape_index: expect.any(Number),
instruction: expect.any(String),
length: expect.any(Number),
street_names: expect.any((Array)),
time: expect.any(Number),
travel_mode: costing,
travel_type: expect.any(String),
type: expect.any(Number),
},
]),
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
shape: expect.any(String),
},
],
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
locations: [
{ ...start, type: 'break', original_index: 0 },
{ ...end, type: 'break', original_index: 1 },
],
});
});
it.each([
'bicycle',
'pedestrian',
'auto',
'truck',
'bus',
])('should request a route for %s', async (costing) => {
const start = { lat: 42.530607, lon: 1.570593 };
const end = { lat: 42.534826, lon: 1.579133 };
const request = {
locations: [start, end],
costing,
directions_type: 'none',
directions_options: {
units: 'kilometers',
},
};
const response = await valhalla.route(request);
expect(response).toEqual({
locations: [
{ ...start, type: 'break', original_index: 0 },
{ ...end, type: 'break', original_index: 1 },
],
status_message: 'Found route between points',
status: 0,
units: 'kilometers',
language: 'en-US',
legs: [
{
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
shape: expect.any(String),
},
],
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
});
});
});
describe('optimizedRoute', () => {
it('should request an optmized route with maneuvers', async () => {
const start = { lat: 42.530607, lon: 1.570593 };
const stop = { lat: 42.534943, lon: 1.572731 };
const end = { lat: 42.534826, lon: 1.579133 };
const costing = 'bicycle';
const request = {
locations: [start, stop, end],
costing,
directions_type: 'maneuvers',
directions_options: {
units: 'kilometers',
},
};
const response = await valhalla.route(request);
expect(response.legs).toHaveLength(2);
expect(response).toEqual({
status_message: 'Found route between points',
status: 0,
units: 'kilometers',
language: 'en-US',
legs: [
{
maneuvers: expect.arrayContaining([
{
begin_shape_index: expect.any(Number),
cost: expect.any(Number),
end_shape_index: expect.any(Number),
instruction: expect.any(String),
length: expect.any(Number),
street_names: expect.any((Array)),
time: expect.any(Number),
travel_mode: costing,
travel_type: expect.any(String),
type: expect.any(Number),
},
]),
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
shape: expect.any(String),
},
{
maneuvers: expect.arrayContaining([
{
begin_shape_index: expect.any(Number),
cost: expect.any(Number),
end_shape_index: expect.any(Number),
instruction: expect.any(String),
length: expect.any(Number),
street_names: expect.any((Array)),
time: expect.any(Number),
travel_mode: costing,
travel_type: expect.any(String),
type: expect.any(Number),
},
]),
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
shape: expect.any(String),
},
],
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
locations: [
{ ...start, type: 'break', original_index: 0 },
{ ...stop, type: 'break', original_index: 1 },
{ ...end, type: 'break', original_index: 2 },
],
});
});
it.each([
'bicycle',
'pedestrian',
'auto',
'truck',
'bus',
])('should request a route for %s', async (costing) => {
const start = { lat: 42.530607, lon: 1.570593 };
const stop = { lat: 42.534943, lon: 1.572731 };
const end = { lat: 42.534826, lon: 1.579133 };
const request = {
locations: [start, stop, end],
costing,
directions_type: 'none',
directions_options: {
units: 'kilometers',
},
};
const response = await valhalla.route(request);
expect(response.legs).toHaveLength(2);
expect(response).toEqual({
locations: [
{ ...start, type: 'break', original_index: 0 },
{ ...stop, type: 'break', original_index: 1 },
{ ...end, type: 'break', original_index: 2 },
],
status_message: 'Found route between points',
status: 0,
units: 'kilometers',
language: 'en-US',
legs: [
{
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
shape: expect.any(String),
},
{
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
shape: expect.any(String),
},
],
summary: {
has_time_restrictions: expect.any(Boolean),
has_toll: expect.any(Boolean),
has_highway: expect.any(Boolean),
has_ferry: expect.any(Boolean),
min_lat: expect.any(Number),
min_lon: expect.any(Number),
max_lat: expect.any(Number),
max_lon: expect.any(Number),
time: expect.any(Number),
length: expect.any(Number),
cost: expect.any(Number),
},
});
});
});
});
//# sourceMappingURL=integration.test.js.map