diff --git a/test/db.js b/test/db.js index 2c963efd..214ce9d0 100644 --- a/test/db.js +++ b/test/db.js @@ -21,6 +21,7 @@ const testJourneysStationToPoi = require('./lib/journeys-station-to-poi') const testEarlierLaterJourneys = require('./lib/earlier-later-journeys') const journeysFailsWithNoProduct = require('./lib/journeys-fails-with-no-product') const testDepartures = require('./lib/departures') +const testJourneysWithDetour = require('./lib/journeys-with-detour') const isObj = o => o !== null && 'object' === typeof o && !Array.isArray(o) @@ -159,15 +160,12 @@ test('journeys: via works – with detour', co(function* (t) { passedStations: true }) - validate(t, journeys, 'journeys', 'journeys') - - const leg = journeys[0].legs.some((leg) => { - return leg.passed && leg.passed.some((passed) => { - return passed.station.id === württembergallee - }) + yield testJourneysWithDetour({ + test: t, + journeys, + validate, + detourIds: [württembergallee] }) - t.ok(leg, 'Württembergalle is not being passed') - t.end() })) diff --git a/test/insa.js b/test/insa.js index 6387bd0b..af3ca98e 100644 --- a/test/insa.js +++ b/test/insa.js @@ -16,6 +16,7 @@ const testJourneysStationToPoi = require('./lib/journeys-station-to-poi') const testEarlierLaterJourneys = require('./lib/earlier-later-journeys') const journeysFailsWithNoProduct = require('./lib/journeys-fails-with-no-product') const testDepartures = require('./lib/departures') +const testJourneysWithDetour = require('./lib/journeys-with-detour') const isObj = o => o !== null && 'object' === typeof o && !Array.isArray(o) @@ -123,18 +124,12 @@ test('journeys: via works – with detour', co(function* (t) { passedStations: true }) - validate(t, journeys, 'journeys', 'journeys') - - const leg = journeys[0].legs.some((leg) => { - return leg.passed && leg.passed.some((passed) => { - return ( - passed.station.id === '8010077' || // todo: trim IDs - passed.station.id === dessau - ) - }) + yield testJourneysWithDetour({ + test: t, + journeys, + validate, + detourIds: ['8010077', dessau] // todo: trim IDs }) - t.ok(leg, 'Dessau is not being passed') - t.end() })) diff --git a/test/lib/journeys-with-detour.js b/test/lib/journeys-with-detour.js new file mode 100644 index 00000000..2358a898 --- /dev/null +++ b/test/lib/journeys-with-detour.js @@ -0,0 +1,21 @@ +'use strict' + +const co = require('./co') + +const testJourneysWithDetour = co(function* (cfg) { + const {test: t, journeys, validate, detourIds} = cfg + + // We assume that going from A to B via C *without* detour is currently + // impossible. We check if the routing engine computes a detour. + + validate(t, journeys, 'journeys', 'journeys') + + const leg = journeys[0].legs.some((leg) => { + return leg.passed && leg.passed.some((passed) => { + return detourIds.includes(passed.station.id) + }) + }) + t.ok(leg, detourIds.join('/') + ' is not being passed') +}) + +module.exports = testJourneysWithDetour diff --git a/test/oebb.js b/test/oebb.js index fc92c581..10e9ec2e 100644 --- a/test/oebb.js +++ b/test/oebb.js @@ -20,6 +20,7 @@ const testJourneysStationToPoi = require('./lib/journeys-station-to-poi') const testEarlierLaterJourneys = require('./lib/earlier-later-journeys') const journeysFailsWithNoProduct = require('./lib/journeys-fails-with-no-product') const testDepartures = require('./lib/departures') +const testJourneysWithDetour = require('./lib/journeys-with-detour') const when = createWhen('Europe/Vienna', 'de-AT') @@ -150,18 +151,12 @@ test('journeys: via works – with detour', co(function* (t) { passedStations: true }) - validate(t, journeys, 'journeys', 'journeys') - - const leg = journeys[0].legs.some((leg) => { - return leg.passed && leg.passed.some((passed) => { - return ( - passed.station.id === donauinsel || - passed.station.id === donauinselPassed - ) - }) + yield testJourneysWithDetour({ + test: t, + journeys, + validate, + detourIds: [donauinsel, donauinselPassed] }) - t.ok(leg, 'Donauinsel is not being passed') - t.end() })) diff --git a/test/vbb.js b/test/vbb.js index b9751308..e1f6d79c 100644 --- a/test/vbb.js +++ b/test/vbb.js @@ -26,6 +26,7 @@ const testJourneysStationToPoi = require('./lib/journeys-station-to-poi') const testEarlierLaterJourneys = require('./lib/earlier-later-journeys') const journeysFailsWithNoProduct = require('./lib/journeys-fails-with-no-product') const testDepartures = require('./lib/departures') +const testJourneysWithDetour = require('./lib/journeys-with-detour') const when = createWhen('Europe/Berlin', 'de-DE') @@ -251,15 +252,12 @@ test('journeys: via works – with detour', co(function* (t) { passedStations: true }) - validate(t, journeys, 'journeys', 'journeys') - - const leg = journeys[0].legs.some((leg) => { - return leg.passed && leg.passed.some((passed) => { - return passed.station.id === württembergallee - }) + yield testJourneysWithDetour({ + test: t, + journeys, + validate, + detourIds: [württembergallee] }) - t.ok(leg, 'Württembergalle is not being passed') - t.end() }))