52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import { planTransit } from '../../../../src/services/amap/amap.transit';
|
|
|
|
describe('AMap transit adapter', () => {
|
|
it('maps an AMap transit segment sequence into internal legs', async () => {
|
|
const client = {
|
|
get: vi.fn().mockResolvedValue({
|
|
status: '1',
|
|
route: {
|
|
transits: [
|
|
{
|
|
duration: '1800',
|
|
cost: '4',
|
|
segments: [
|
|
{ walking: { duration: '300', distance: '250', polyline: '116.403714,39.910627;116.404714,39.911627' } },
|
|
{
|
|
bus: {
|
|
buslines: [
|
|
{
|
|
name: '1路(终点)',
|
|
duration: '900',
|
|
distance: '5000',
|
|
departure_stop: { name: 'A', location: '116.404714,39.911627' },
|
|
arrival_stop: { name: 'B', location: '116.414714,39.921627' },
|
|
polyline: '116.404714,39.911627;116.414714,39.921627',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
}),
|
|
};
|
|
|
|
await expect(planTransit(client, { lat: 39.908823, lng: 116.39747 }, { lat: 39.92, lng: 116.41 })).resolves.toMatchObject({
|
|
itineraries: [
|
|
{
|
|
transfers: 0,
|
|
walkSeconds: 300,
|
|
legs: expect.arrayContaining([
|
|
expect.objectContaining({ mode: 'WALK', distance: 250 }),
|
|
expect.objectContaining({ mode: 'BUS', line: '1路' }),
|
|
]),
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|