Files
mediacms/frontend/tests/utils/settings/taxonomies.test.ts

62 lines
2.5 KiB
TypeScript

import { taxonomiesConfig } from '../../../src/static/js/utils/settings/taxonomies';
describe('utils/settings', () => {
describe('taxonomies', () => {
test('Should return defaults when settings is undefined', () => {
const res = taxonomiesConfig();
expect(res).toStrictEqual({
tags: { enabled: false, title: 'Tags' },
categories: { enabled: false, title: 'Categories' },
});
});
test('Should enable a taxonomy when enabled is true', () => {
const res = taxonomiesConfig({ tags: { enabled: true } });
expect(res.tags).toStrictEqual({ enabled: true, title: 'Tags' });
});
test('Should keep taxonomy disabled when enabled is explicitly false', () => {
const res = taxonomiesConfig({ categories: { enabled: false } });
expect(res.categories).toStrictEqual({ enabled: false, title: 'Categories' });
});
test('Should default to enabled=true when enabled is omitted but key exists', () => {
const res = taxonomiesConfig({ tags: {} });
expect(res.tags).toStrictEqual({ enabled: true, title: 'Tags' });
});
test('Should trim title when provided', () => {
const res = taxonomiesConfig({ tags: { title: ' My Tags ' } });
expect(res.tags).toStrictEqual({ enabled: true, title: 'My Tags' });
});
test('Should ignore non-string title values and keep defaults', () => {
const res = taxonomiesConfig({
tags: { title: null as any },
categories: { title: 123 as any },
});
expect(res.tags).toStrictEqual({ enabled: true, title: 'Tags' });
expect(res.categories).toStrictEqual({ enabled: true, title: 'Categories' });
});
test('Should ignore unknown taxonomy keys', () => {
const input = {
unknownKey: { enabled: true, title: 'X' },
tags: { enabled: true, title: 'Tagz' },
};
const res = taxonomiesConfig(input);
expect(res).toStrictEqual({
tags: { enabled: true, title: 'Tagz' },
categories: { enabled: false, title: 'Categories' },
});
});
test('Should not change title when title is undefined', () => {
const res = taxonomiesConfig({ categories: { enabled: true, title: undefined } });
expect(res.categories).toStrictEqual({ enabled: true, title: 'Categories' });
});
});
});