'use strict'

const isRoughlyEqual = require('is-roughly-equal')

const testJourneysWalkingSpeed = async (cfg) => {
	const {test: t, journeys, validate, from, to, when, products, minTimeDifference} = cfg

	const {journeys: [journeyWithFastWalking]} = await journeys(from, to, {
		departure: when,
		results: 1, products, walkingSpeed: 'fast'
	})
	const legWithFastWalking = journeyWithFastWalking.legs.find(l => l.walking)
	t.ok(legWithFastWalking, 'no walking leg in journey with fast walking')

	const {journeys: [journeyWithSlowWalking]} = await journeys(from, to, {
		departure: when,
		results: 1, products, walkingSpeed: 'slow'
	})
	const legWithSlowWalking = journeyWithSlowWalking.legs.find(l => l.walking)
	t.ok(legWithSlowWalking, 'no walking leg in journey with slow walking')

	const fastDist = legWithFastWalking.distance
	const slowDist = legWithSlowWalking.distance
	t.ok(isRoughlyEqual(100, fastDist, slowDist), 'precondition failed')
	const fastDur = new Date(legWithFastWalking.arrival) - new Date(legWithFastWalking.departure)
	const slowDur = new Date(legWithSlowWalking.arrival) - new Date(legWithSlowWalking.departure)
	t.notOk(isRoughlyEqual(minTimeDifference, fastDur, slowDur), 'walkingSpeed not applied')
	t.end()
}

module.exports = testJourneysWalkingSpeed
