// todo: use import assertions once they're supported by Node.js & ESLint // https://github.com/tc39/proposal-import-assertions import {createRequire} from 'module' const require = createRequire(import.meta.url) import tap from 'tap' import {createClient} from '../index.js' import {withThrottling} from '../throttle.js' import {profile as vbbProfile} from '../p/vbb/index.js' const depsRes = require('./fixtures/vbb-departures.json') const ua = 'public-transport/hafas-client:test' const spichernstr = '900000042101' tap.test('withThrottling works', {timeout: 3000}, (t) => { let calls = 0 const mockedRequest = async (ctx, userAgent, reqData) => { calls++ return { res: depsRes, common: ctx.profile.parseCommon({...ctx, res: depsRes}) } } const profile = withThrottling({ ...vbbProfile, request: mockedRequest }, 2, 1000) const client = createClient(profile, ua) t.plan(3) for (let i = 0; i < 10; i++) { const p = client.departures(spichernstr, {duration: 1}) p.catch(() => {}) } setTimeout(() => t.equal(calls, 2), 500) setTimeout(() => t.equal(calls, 4), 1500) setTimeout(() => t.equal(calls, 6), 2500) })