// 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 forEach from 'lodash/forEach.js';
import {
	checkIfResponseIsOk as checkIfResIsOk,
	request,
} from '../../lib/request.js';
import {
	INVALID_REQUEST,
	NOT_FOUND,
	HafasError,
	HafasInvalidRequestError,
	HafasNotFoundError,
} from '../../lib/errors.js';
import {formatTripReq} from '../../format/trip-req.js';

const resNoMatch = {verbindungen: [], verbindungReference: {}, fehlerNachricht: {code: 'MDA-AK-MSG-1001', ueberschrift: 'Datum liegt außerhalb der Fahrplanperiode.', text: 'Das Datum liegt außerhalb der Fahrplanperiode.'}};

const USER_AGENT = 'public-transport/hafas-client:test';

const secret = Symbol('secret');

tap.test('checkIfResponseIsOk properly throws HAFAS errors', (t) => {
	try {
		checkIfResIsOk({
			body: resNoMatch,
			errProps: {secret},
		});
	} catch (err) {
		t.ok(err);

		t.ok(err instanceof HafasError);
		t.equal(err.isHafasError, true);
		t.ok(err instanceof HafasError);
		t.equal(err.isCausedByServer, false);
		t.equal(err.code, 'MDA-AK-MSG-1001');

		t.equal(err.hafasMessage, 'Datum liegt außerhalb der Fahrplanperiode.');
		t.equal(err.hafasDescription, 'Das Datum liegt außerhalb der Fahrplanperiode.');

		t.end();
	}
});