Trek_CN/server/tests/unit/services/amap/amap.transit.test.ts

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路' }),
]),
},
],
});
});
});