@financial-times/n-concept-ids
Version:
A place to store concept ids as constants
37 lines (30 loc) • 1.27 kB
JavaScript
import { describe, test } from 'node:test';
import assert from 'node:assert';
import { data, getPodcastByConceptid } from '../src/podcasts.js';
describe('getPodcastByConceptid()', () => {
test('Get podcast by concept ID', () => {
const podcast = getPodcastByConceptid('11379aab-8b8e-44c8-9153-10be6eaf3f50');
assert.strictEqual(podcast.conceptId, '11379aab-8b8e-44c8-9153-10be6eaf3f50');
});
test('Get podcast 16x9 image URL by concept ID', () => {
const podcast = getPodcastByConceptid('11379aab-8b8e-44c8-9153-10be6eaf3f50');
assert.match(podcast.image16x9, /https:\/\/\w+/);
});
test('With unknown conceptId', () => {
assert.strictEqual(getPodcastByConceptid('00000000-0000-0000-0000-000000000000'), undefined);
});
test('With no arguments', () => {
assert.strictEqual(getPodcastByConceptid(), undefined);
});
});
describe('data', () => {
test('Check data structure', () => {
assert.ok(data instanceof Array);
assert.match(data[0].conceptId, /^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/);
assert.match(data[0].image16x9, /https:\/\/\w+/);
});
test('Check if all podcast concepts are unique', () => {
const uniqueConcepts = new Set(data.map((podcast) => podcast.conceptId));
assert.strictEqual(uniqueConcepts.size, data.length);
});
});