mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-25 14:09:03 -04:00

the #shared alias used by Nuxt cannot be easily disabled and to prevent breackage with jiti, we make use of it
51 lines
2.2 KiB
TypeScript
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);
|
|
});
|
|
});
|