blob: 0647e3e8c8c2a488552738c55ccca972e5201130 [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 { walk } from '../../utils/index.js';
import {
generateMeta,
applyMirroring,
addVersionLast,
createManifest,
} from './index.js';
describe('Build functions', () => {
it('generateMeta', () => {
const result = generateMeta();
assert.ok(result.version);
assert.ok(result.timestamp instanceof Date);
});
it('applyMirroring', () => {
const data: any = {
feature: {
__compat: {
support: {
chrome: {
version_added: '90',
},
edge: 'mirror',
firefox: {
version_added: '40',
},
ie: {
version_added: false,
},
opera: 'mirror',
safari: {
version_added: '10',
},
},
},
},
};
const walker = walk(undefined, data);
for (const feature of walker) {
applyMirroring(feature);
}
assert.equal(data.feature.__compat.support.edge.version_added, '90');
assert.equal(data.feature.__compat.support.opera.version_added, '76');
});
it('addVersionLast', () => {
const data: any = {
feature: {
__compat: {
support: {
chrome: {
version_added: '10',
version_removed: '20',
},
firefox: [
{
version_added: '18',
},
{
version_added: '1',
version_removed: '4',
},
],
safari: {
version_added: '10',
version_removed: 'preview',
version_last: 'preview',
},
edge: {
version_added: '12',
version_removed: true,
version_last: true,
},
},
},
},
};
const walker = walk(undefined, data);
for (const feature of walker) {
addVersionLast(feature);
}
assert.equal(data.feature.__compat.support.chrome.version_last, '19');
assert.equal(
data.feature.__compat.support.firefox[0].version_last,
undefined,
);
assert.equal(data.feature.__compat.support.firefox[1].version_last, '3.6');
assert.equal(data.feature.__compat.support.safari.version_last, 'preview');
assert.equal(data.feature.__compat.support.edge.version_last, true);
});
it('createManifest', () => {
const manifest = createManifest();
assert.ok(manifest.main);
assert.ok(manifest.exports);
assert.ok(manifest.types);
assert.ok(manifest.name);
assert.ok(manifest.description);
assert.ok(manifest.repository);
assert.ok(manifest.keywords);
assert.ok(manifest.author);
assert.ok(manifest.license);
assert.ok(manifest.bugs);
assert.ok(manifest.homepage);
});
});