2018-07-28 13:43:58 +02:00
|
|
|
'use strict'
|
|
|
|
|
|
|
|
const stations = require('vbb-stations-autocomplete')
|
|
|
|
const a = require('assert')
|
|
|
|
const shorten = require('vbb-short-station-name')
|
|
|
|
const products = require('../../p/bvg/products')
|
|
|
|
|
|
|
|
const {createWhen} = require('./util')
|
|
|
|
const {
|
|
|
|
station: createValidateStation,
|
|
|
|
line: createValidateLine,
|
|
|
|
journeyLeg: createValidateJourneyLeg,
|
|
|
|
departure: createValidateDeparture,
|
2018-12-30 13:52:34 +01:00
|
|
|
movement: createValidateMovement
|
2018-07-28 13:43:58 +02:00
|
|
|
} = require('./validators')
|
|
|
|
|
|
|
|
const when = createWhen('Europe/Berlin', 'de-DE')
|
|
|
|
|
|
|
|
const cfg = {
|
|
|
|
when,
|
|
|
|
stationCoordsOptional: false,
|
|
|
|
products
|
|
|
|
}
|
|
|
|
|
|
|
|
const validateDirection = (dir, name) => {
|
|
|
|
if (!stations(dir, true, false)[0]) {
|
|
|
|
console.error(name + `: station "${dir}" is unknown`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// todo: coordsOptional = false
|
|
|
|
const _validateStation = createValidateStation(cfg)
|
|
|
|
const validateStation = (validate, s, name) => {
|
|
|
|
_validateStation(validate, s, name)
|
|
|
|
// todo: find station by ID
|
|
|
|
a.equal(s.name, shorten(s.name), name + '.name must be shortened')
|
|
|
|
}
|
|
|
|
|
|
|
|
const _validateLine = createValidateLine(cfg)
|
|
|
|
const validateLine = (validate, l, name) => {
|
|
|
|
_validateLine(validate, l, name)
|
|
|
|
if (l.symbol !== null) {
|
|
|
|
a.strictEqual(typeof l.symbol, 'string', name + '.symbol must be a string')
|
|
|
|
a.ok(l.symbol, name + '.symbol must not be empty')
|
|
|
|
}
|
|
|
|
if (l.nr !== null) {
|
|
|
|
a.strictEqual(typeof l.nr, 'number', name + '.nr must be a string')
|
|
|
|
a.ok(l.nr, name + '.nr must not be empty')
|
|
|
|
}
|
|
|
|
if (l.metro !== null) {
|
|
|
|
a.strictEqual(typeof l.metro, 'boolean', name + '.metro must be a boolean')
|
|
|
|
}
|
|
|
|
if (l.express !== null) {
|
|
|
|
a.strictEqual(typeof l.express, 'boolean', name + '.express must be a boolean')
|
|
|
|
}
|
|
|
|
if (l.night !== null) {
|
|
|
|
a.strictEqual(typeof l.night, 'boolean', name + '.night must be a boolean')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const _validateJourneyLeg = createValidateJourneyLeg(cfg)
|
|
|
|
const validateJourneyLeg = (validate, l, name) => {
|
|
|
|
_validateJourneyLeg(validate, l, name)
|
|
|
|
if (l.mode !== 'walking') {
|
|
|
|
validateDirection(l.direction, name + '.direction')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const _validateDeparture = createValidateDeparture(cfg)
|
|
|
|
const validateDeparture = (validate, dep, name) => {
|
|
|
|
_validateDeparture(validate, dep, name)
|
|
|
|
validateDirection(dep.direction, name + '.direction')
|
|
|
|
}
|
|
|
|
|
2018-12-30 13:52:34 +01:00
|
|
|
const _validateMovement = createValidateMovement(cfg)
|
2018-07-28 13:43:58 +02:00
|
|
|
const validateMovement = (validate, m, name) => {
|
|
|
|
_validateMovement(validate, m, name)
|
|
|
|
validateDirection(m.direction, name + '.direction')
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
cfg,
|
|
|
|
validateStation,
|
|
|
|
validateLine,
|
|
|
|
validateJourneyLeg,
|
|
|
|
validateDeparture,
|
|
|
|
validateMovement
|
|
|
|
}
|