2018-11-21 19:07:37 +01:00
|
|
|
const testEarlierLaterJourneys = async (cfg) => {
|
2018-04-24 15:24:59 +02:00
|
|
|
const {
|
|
|
|
test: t,
|
|
|
|
fetchJourneys,
|
|
|
|
fromId,
|
|
|
|
toId,
|
2024-02-06 22:58:49 +01:00
|
|
|
when,
|
2018-04-24 15:24:59 +02:00
|
|
|
// todo: validate
|
2024-02-06 22:58:49 +01:00
|
|
|
} = cfg;
|
2018-04-24 15:24:59 +02:00
|
|
|
|
2018-11-21 19:07:37 +01:00
|
|
|
const model = await fetchJourneys(fromId, toId, {
|
2024-02-06 22:58:49 +01:00
|
|
|
results: 3, departure: when,
|
|
|
|
});
|
2018-04-24 15:24:59 +02:00
|
|
|
|
|
|
|
// todo: move to journeys validator?
|
2024-02-06 22:58:49 +01:00
|
|
|
t.equal(typeof model.earlierRef, 'string');
|
|
|
|
t.ok(model.earlierRef);
|
|
|
|
t.equal(typeof model.laterRef, 'string');
|
|
|
|
t.ok(model.laterRef);
|
2018-04-24 15:24:59 +02:00
|
|
|
|
2018-05-31 13:42:54 +02:00
|
|
|
// departure/arrival and earlierThan/laterThan should be mutually exclusive
|
2021-12-29 18:53:50 +01:00
|
|
|
await t.rejects(async () => {
|
|
|
|
await fetchJourneys(fromId, toId, {
|
2024-02-06 22:58:49 +01:00
|
|
|
departure: when, earlierThan: model.earlierRef,
|
|
|
|
});
|
|
|
|
});
|
2021-12-29 18:53:50 +01:00
|
|
|
await t.rejects(async () => {
|
|
|
|
await fetchJourneys(fromId, toId, {
|
2024-02-06 22:58:49 +01:00
|
|
|
departure: when, laterThan: model.laterRef,
|
|
|
|
});
|
|
|
|
});
|
2021-12-29 18:53:50 +01:00
|
|
|
await t.rejects(async () => {
|
|
|
|
await fetchJourneys(fromId, toId, {
|
2024-02-06 22:58:49 +01:00
|
|
|
arrival: when, earlierThan: model.earlierRef,
|
|
|
|
});
|
|
|
|
});
|
2021-12-29 18:53:50 +01:00
|
|
|
await t.rejects(async () => {
|
|
|
|
await fetchJourneys(fromId, toId, {
|
2024-02-06 22:58:49 +01:00
|
|
|
arrival: when, laterThan: model.laterRef,
|
|
|
|
});
|
|
|
|
});
|
2018-04-24 15:24:59 +02:00
|
|
|
|
2024-02-06 22:58:49 +01:00
|
|
|
let earliestDep = Infinity, latestDep = -Infinity;
|
2019-01-16 21:41:17 +08:00
|
|
|
for (let j of model.journeys) {
|
2024-02-06 22:58:49 +01:00
|
|
|
if (j.legs[0].departure === null) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
const dep = Date.parse(j.legs[0].departure);
|
|
|
|
if (dep < earliestDep) {
|
|
|
|
earliestDep = dep;
|
|
|
|
} else if (dep > latestDep) {
|
|
|
|
latestDep = dep;
|
|
|
|
}
|
2018-04-24 15:24:59 +02:00
|
|
|
}
|
|
|
|
|
2018-11-21 19:07:37 +01:00
|
|
|
const earlier = await fetchJourneys(fromId, toId, {
|
2018-04-24 15:24:59 +02:00
|
|
|
results: 3,
|
|
|
|
// todo: single journey ref?
|
2024-02-06 22:58:49 +01:00
|
|
|
earlierThan: model.earlierRef,
|
|
|
|
});
|
2019-01-16 21:41:17 +08:00
|
|
|
for (let j of earlier.journeys) {
|
2024-02-06 22:58:49 +01:00
|
|
|
const firstLeg = j.legs[0];
|
|
|
|
const dep = Date.parse(firstLeg.departure || firstLeg.plannedDeparture);
|
|
|
|
t.ok(dep < earliestDep);
|
2018-04-24 15:24:59 +02:00
|
|
|
}
|
|
|
|
|
2018-11-21 19:07:37 +01:00
|
|
|
const later = await fetchJourneys(fromId, toId, {
|
2018-04-24 15:24:59 +02:00
|
|
|
results: 3,
|
|
|
|
// todo: single journey ref?
|
2024-02-06 22:58:49 +01:00
|
|
|
laterThan: model.laterRef,
|
|
|
|
});
|
2019-01-16 21:41:17 +08:00
|
|
|
for (let j of later.journeys) {
|
2024-02-06 22:58:49 +01:00
|
|
|
const firstLeg = j.legs[0];
|
|
|
|
const dep = Date.parse(firstLeg.departure || firstLeg.plannedDeparture);
|
|
|
|
t.ok(dep > latestDep);
|
2018-04-24 15:24:59 +02:00
|
|
|
}
|
2024-02-06 22:58:49 +01:00
|
|
|
};
|
2018-04-24 15:24:59 +02:00
|
|
|
|
2022-05-07 16:17:37 +02:00
|
|
|
export {
|
|
|
|
testEarlierLaterJourneys,
|
2024-02-06 22:58:49 +01:00
|
|
|
};
|