nextbus-to-gtfs-rt
Version:
A script that converts the nextbus api to gtfs-rt
60 lines (39 loc) • 1.71 kB
JavaScript
var assert = require('chai').assert,
moment = require('moment'),
nock = require('nock'),
realtime = require('gtfs-realtime-bindings')
var util = require('./util.js')
var BASE_URL_PATH = '/service/publicXMLFeed',
NOCK_HOST = 'http://webservices.nextbus.com',
FIXTURES_FOLDER = './test/fixtures'
var testTranslator = util.getTranslator()
describe('vehicle positions', function() {
it('should dl nextbus vehicle locations and return vehicle positions protobuf', function(done) {
var nockScope = nock(NOCK_HOST)
.get(BASE_URL_PATH)
.query(util.makeQueryParams('vehicleLocations', { t: 0, r: '' }))
.replyWithFile(200, FIXTURES_FOLDER + '/vehicleLocations.xml')
testTranslator.processVehiclePositions(function(err, feedMessage) {
nockScope.done()
try {
assert.isNotOk(err)
var entities = util.assertIsFeedMessageWithExactEntityLength(feedMessage, 8)
util.assertAllEntitiesAreSameType('vehicle', entities)
var vehicle = util.findEntity('vehicle', entities, '404')
// id
assert.deepPropertyVal(vehicle, 'vehicle.id', '404')
// position
assert.deepPropertyVal(vehicle, 'position.latitude', 47.599205)
assert.deepPropertyVal(vehicle, 'position.longitude', -122.325349)
assert.deepPropertyVal(vehicle, 'position.bearing', 88)
assert.deepProperty(vehicle, 'position.speed')
assert.approximately(vehicle.position.speed, 7.777777777, 0.00001)
// timestamp
assert.isBelow(util.getUInt64(vehicle.timestamp), moment().subtract(8, 'seconds').unix())
} catch(e) {
return done(e)
}
done()
})
})
})