PronounsPage/test/locale/config.test.ts
Valentyne Stigloher 10180aa6a3 (refactor) use #shared alias instead of ~~/shared
the #shared alias used by Nuxt cannot be easily disabled and to prevent breackage with jiti, we make use of it
2025-08-17 18:56:02 +02:00

51 lines
2.2 KiB
TypeScript

import { describe, expect, test } from 'vitest';
import { parsePronouns } from '#shared/buildPronoun.ts';
import { loadGrammarTableVariantsConverter } from '~/src/data.ts';
import type { Config } from '~~/locale/config.ts';
import type { PronounData } from '~~/locale/data.ts';
import allLocales from '~~/locale/locales.ts';
import { loadSuml, loadTsv } from '~~/server/loader.ts';
import { checkContainsValidMorphemes } from '~~/test/shared/language/grammarTables.ts';
describe.each(allLocales)('config for $code', async ({ code }) => {
const config = await loadSuml<Config>(`locale/${code}/config.suml`);
const pronounsRaw = await loadTsv<PronounData<string>>(`locale/${code}/pronouns/pronouns.tsv`);
const pronouns = parsePronouns(config, pronounsRaw);
const variantsFromBaseConverter = await loadGrammarTableVariantsConverter(code);
test('pronouns.generator.startPronoun must be a valid pronoun', () => {
if (!config.pronouns.enabled || !config.pronouns.generator.enabled) {
return;
}
expect(pronouns[config.pronouns.generator.startPronoun]).toBeDefined();
});
test('pronouns.null.morphemes contain valid morphemes', () => {
if (!config.pronouns.null || config.pronouns.null.morphemes === undefined) {
return;
}
expect(config.pronouns.morphemes).toEqual(expect.arrayContaining(Object.keys(config.pronouns.null.morphemes)));
});
test('pronouns.null.emoji contain valid morphemes', () => {
if (!config.pronouns.emoji) {
return;
}
expect(config.pronouns.morphemes).toEqual(expect.arrayContaining(Object.keys(config.pronouns.emoji.morphemes)));
});
test('pronouns.grammarTables contain valid morphemes', () => {
if (!config.pronouns.enabled || !config.pronouns.grammarTables) {
return;
}
checkContainsValidMorphemes(config.pronouns.grammarTables, variantsFromBaseConverter, config.pronouns.morphemes);
});
test('profile.defaultWords has four columns', () => {
if (!config.profile.editorEnabled) {
return;
}
expect(config.profile.defaultWords).toHaveLength(4);
});
});