blob: c3ffffc17fe62035615150821ba1e5cc189f6862 [file] [log] [blame] [edit]
/* This file is a part of @mdn/browser-compat-data
* See LICENSE file for more information. */
import assert from 'node:assert/strict';
import bcd from '../index.js';
import query from './query.js';
import {
joinPath,
isBrowser,
isFeature,
descendantKeys,
} from './walkingUtils.js';
describe('joinPath()', () => {
it('joins dotted paths to features', () => {
assert.equal(joinPath('html', 'elements'), 'html.elements');
});
it('silently discards undefineds', () => {
assert.equal(joinPath(undefined, undefined, undefined), '');
assert.equal(joinPath(undefined, 'api'), 'api');
});
});
describe('isBrowser()', () => {
it('returns true for browser-like objects', () => {
assert.equal(isBrowser(bcd.browsers.firefox), true);
});
it('returns false for feature-like objects', () => {
assert.equal(isBrowser(query('html.elements.a')), false);
});
});
describe('isFeature()', () => {
it('returns false for browser-like objects', () => {
assert.equal(isFeature(bcd.browsers.chrome), false);
});
it('returns true for feature-like objects', () => {
assert.equal(isFeature(query('html.elements.a')), true);
});
});
describe('descendantKeys()', () => {
it('returns empty array if data is invalid', () => {
assert.strictEqual(descendantKeys(123).length, 0);
assert.strictEqual(descendantKeys('Hello World!').length, 0);
assert.strictEqual(descendantKeys(null).length, 0);
assert.strictEqual(descendantKeys(undefined).length, 0);
});
});