country-data-list
Version:
Data about countries - like their ISO codes and currencies
66 lines (56 loc) • 1.75 kB
JavaScript
import { expect } from 'chai';
import { countries, regions } from '../src/index.js';
describe('regions', () => {
describe("check region's countries are known", () => {
Object.keys(regions).forEach((key) => {
describe(key.toString(), () => {
regions[key].countries.forEach((country) => {
it(country, () => {
expect(countries[country]).to.exist;
});
});
});
});
});
describe('check region countries exist', () => {
let countriesAssigned = [];
Object.keys(regions).forEach((key) => {
const region = regions[key];
describe(key.toString(), () => {
if (!region.countries) {
region[key].countries.forEach((country) => {
countriesAssigned.push(country);
});
}
});
});
countriesAssigned = countriesAssigned.sort();
const duplicate = countriesAssigned.filter((value, index, array) => {
array.splice(index);
return array.indexOf(value) !== -1;
});
it('are not duplicated', () => {
expect(duplicate.length).to.equal(0);
});
});
describe('check all assigned countries are in regions', () => {
const countriesAssigned = [];
const countriesAvailable = [];
Object.keys(regions).forEach((key) => {
regions[key].countries.forEach((country) => {
countriesAssigned.push(country);
});
});
countries.all.forEach(({ status, alpha2 }) => {
if (status === 'assigned') {
countriesAvailable.push(alpha2);
}
});
const difference = countriesAvailable.filter(
(data) => !countriesAssigned.includes(data)
);
it('are all used', () => {
expect(difference.length).to.equal(0);
});
});
});