summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2024-01-31 08:38:30 -0500
committerGitHub <noreply@github.com>2024-01-31 13:38:30 +0000
commit87ed7c8affd3ade9d3cd2d9ed1a61dd5f224e473 (patch)
treebe727294e31ef21e8a3f634734610e69e4a155ac /test
parent3e419aa562aab03ca20421aaf7e4d1a39194a5b4 (diff)
Module refactoring (#588)
* Convert PronunciationGenerator into static functions * Convert DictionaryDataUtil into static functions * Convert AnkiNoteDataCreator into static functions * Convert MediaUtil into static functions * Convert RegexUtil into static functions * Convert StringUtil into static functions * Convert ArrayBufferUtil into static functions * Convert AnkiUtil into static functions * Convert PermissionsUtil into static functions * Convert ProfileConditionsUtil into static functions
Diffstat (limited to 'test')
-rw-r--r--test/dictionary-data.test.js9
-rw-r--r--test/dictionary-data.write.js6
-rw-r--r--test/fixtures/translator-test.js21
-rw-r--r--test/profile-conditions-util.test.js10
-rw-r--r--test/utilities/anki.js6
5 files changed, 22 insertions, 30 deletions
diff --git a/test/dictionary-data.test.js b/test/dictionary-data.test.js
index 438e1e97..9f8ba6f0 100644
--- a/test/dictionary-data.test.js
+++ b/test/dictionary-data.test.js
@@ -53,7 +53,10 @@ describe('Dictionary data', () => {
expected3: expectedResults3[i]
}));
describe.each(testCases)('Test %#: $data.name', ({data, expected1, expected2, expected3}) => {
- test('Test', async ({translator, ankiNoteDataCreator, expect}) => {
+ test('Test', async ({window, translator, expect}) => {
+ // The window property needs to be referenced for it to be initialized.
+ // It is needed for DOM access for structured content.
+ void window;
switch (data.func) {
case 'findTerms':
{
@@ -62,7 +65,7 @@ describe('Dictionary data', () => {
const options = createFindOptions(dictionaryName, optionsPresets, data.options);
const {dictionaryEntries, originalTextLength} = await translator.findTerms(mode, text, options);
const renderResults = mode !== 'simple' ? await getTemplateRenderResults(dictionaryEntries, 'terms', mode, template, expect) : null;
- const noteDataList = mode !== 'simple' ? dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(ankiNoteDataCreator, dictionaryEntry, mode)) : null;
+ const noteDataList = mode !== 'simple' ? dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(dictionaryEntry, mode)) : null;
expect.soft(originalTextLength).toStrictEqual(expected1.originalTextLength);
expect.soft(dictionaryEntries).toStrictEqual(expected1.dictionaryEntries);
expect.soft(noteDataList).toEqual(expected2.noteDataList);
@@ -76,7 +79,7 @@ describe('Dictionary data', () => {
const options = createFindOptions(dictionaryName, optionsPresets, data.options);
const dictionaryEntries = await translator.findKanji(text, options);
const renderResults = await getTemplateRenderResults(dictionaryEntries, 'kanji', 'split', template, expect);
- const noteDataList = dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(ankiNoteDataCreator, dictionaryEntry, 'split'));
+ const noteDataList = dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(dictionaryEntry, 'split'));
expect.soft(dictionaryEntries).toStrictEqual(expected1.dictionaryEntries);
expect.soft(noteDataList).toEqual(expected2.noteDataList);
expect.soft(renderResults).toStrictEqual(expected3.results);
diff --git a/test/dictionary-data.write.js b/test/dictionary-data.write.js
index bdf635c8..d88bd3cd 100644
--- a/test/dictionary-data.write.js
+++ b/test/dictionary-data.write.js
@@ -35,7 +35,7 @@ const dirname = path.dirname(fileURLToPath(import.meta.url));
const dictionaryName = 'Test Dictionary 2';
const test = await createTranslatorTest(void 0, path.join(dirname, 'data/dictionaries/valid-dictionary1'), dictionaryName);
-test('Write dictionary data expected data', async ({translator, ankiNoteDataCreator, expect}) => {
+test('Write dictionary data expected data', async ({translator, expect}) => {
const testInputsFilePath = path.join(dirname, 'data/translator-test-inputs.json');
/** @type {import('test/translator').TranslatorTestInputs} */
const {optionsPresets, tests} = parseJson(readFileSync(testInputsFilePath, {encoding: 'utf8'}));
@@ -63,7 +63,7 @@ test('Write dictionary data expected data', async ({translator, ankiNoteDataCrea
const options = createFindOptions(dictionaryName, optionsPresets, data.options);
const {dictionaryEntries, originalTextLength} = await translator.findTerms(mode, text, options);
const renderResults = mode !== 'simple' ? await getTemplateRenderResults(dictionaryEntries, 'terms', mode, template, null) : null;
- const noteDataList = mode !== 'simple' ? dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(ankiNoteDataCreator, dictionaryEntry, mode)) : null;
+ const noteDataList = mode !== 'simple' ? dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(dictionaryEntry, mode)) : null;
actualResults1.push({name, originalTextLength, dictionaryEntries});
actualResults2.push({name, noteDataList});
actualResults3.push({name, results: renderResults});
@@ -76,7 +76,7 @@ test('Write dictionary data expected data', async ({translator, ankiNoteDataCrea
const options = createFindOptions(dictionaryName, optionsPresets, data.options);
const dictionaryEntries = await translator.findKanji(text, options);
const renderResults = await getTemplateRenderResults(dictionaryEntries, 'kanji', 'split', template, null);
- const noteDataList = dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(ankiNoteDataCreator, dictionaryEntry, 'split'));
+ const noteDataList = dictionaryEntries.map((dictionaryEntry) => createTestAnkiNoteData(dictionaryEntry, 'split'));
actualResults1.push({name, dictionaryEntries});
actualResults2.push({name, noteDataList});
actualResults3.push({name, results: renderResults});
diff --git a/test/fixtures/translator-test.js b/test/fixtures/translator-test.js
index 58247b70..d1b3de8b 100644
--- a/test/fixtures/translator-test.js
+++ b/test/fixtures/translator-test.js
@@ -23,7 +23,6 @@ import {dirname, join} from 'path';
import {expect, vi} from 'vitest';
import {parseJson} from '../../dev/json.js';
import {createDictionaryArchive} from '../../dev/util.js';
-import {AnkiNoteDataCreator} from '../../ext/js/data/sandbox/anki-note-data-creator.js';
import {DictionaryDatabase} from '../../ext/js/dictionary/dictionary-database.js';
import {DictionaryImporter} from '../../ext/js/dictionary/dictionary-importer.js';
import {Translator} from '../../ext/js/language/translator.js';
@@ -42,7 +41,7 @@ vi.stubGlobal('chrome', chrome);
/**
* @param {string} dictionaryDirectory
* @param {string} dictionaryName
- * @returns {Promise<{translator: Translator, ankiNoteDataCreator: AnkiNoteDataCreator}>}
+ * @returns {Promise<Translator>}
*/
async function createTranslatorContext(dictionaryDirectory, dictionaryName) {
// Dictionary
@@ -69,31 +68,23 @@ async function createTranslatorContext(dictionaryDirectory, dictionaryName) {
const deinflectionReasons = parseJson(readFileSync(languageTransformDescriptorPath, {encoding: 'utf8'}));
translator.prepare(deinflectionReasons);
- // Assign properties
- const ankiNoteDataCreator = new AnkiNoteDataCreator();
- return {translator, ankiNoteDataCreator};
+ return translator;
}
/**
* @param {string|undefined} htmlFilePath
* @param {string} dictionaryDirectory
* @param {string} dictionaryName
- * @returns {Promise<import('vitest').TestAPI<{window: import('jsdom').DOMWindow, translator: Translator, ankiNoteDataCreator: AnkiNoteDataCreator}>>}
+ * @returns {Promise<import('vitest').TestAPI<{window: import('jsdom').DOMWindow, translator: Translator}>>}
*/
export async function createTranslatorTest(htmlFilePath, dictionaryDirectory, dictionaryName) {
const test = createDomTest(htmlFilePath);
- const {translator, ankiNoteDataCreator} = await createTranslatorContext(dictionaryDirectory, dictionaryName);
- /** @type {import('vitest').TestAPI<{window: import('jsdom').DOMWindow, translator: Translator, ankiNoteDataCreator: AnkiNoteDataCreator}>} */
+ const translator = await createTranslatorContext(dictionaryDirectory, dictionaryName);
+ /** @type {import('vitest').TestAPI<{window: import('jsdom').DOMWindow, translator: Translator}>} */
const result = test.extend({
window: async ({window}, use) => { await use(window); },
// eslint-disable-next-line no-empty-pattern
- translator: async ({}, use) => { await use(translator); },
- ankiNoteDataCreator: async ({window}, use) => {
- // The window property needs to be referenced for it to be initialized.
- // It is needed for DOM access for structured content.
- void window;
- await use(ankiNoteDataCreator);
- }
+ translator: async ({}, use) => { await use(translator); }
});
return result;
}
diff --git a/test/profile-conditions-util.test.js b/test/profile-conditions-util.test.js
index 7af5f223..fcd53939 100644
--- a/test/profile-conditions-util.test.js
+++ b/test/profile-conditions-util.test.js
@@ -17,7 +17,7 @@
*/
import {describe, expect, test} from 'vitest';
-import {ProfileConditionsUtil} from '../ext/js/background/profile-conditions-util.js';
+import {createSchema, normalizeContext} from '../ext/js/background/profile-conditions-util.js';
/** */
function testNormalizeContext() {
@@ -50,8 +50,7 @@ function testNormalizeContext() {
];
test.each(data)('normalize-context-test-%#', ({context, expected}) => {
- const profileConditionsUtil = new ProfileConditionsUtil();
- const actual = profileConditionsUtil.normalizeContext(context);
+ const actual = normalizeContext(context);
expect(actual).toStrictEqual(expected);
});
});
@@ -1101,14 +1100,13 @@ function testSchemas() {
/* eslint-enable no-multi-spaces */
test.each(data)('schemas-test-%#', ({conditionGroups, expectedSchema, inputs}) => {
- const profileConditionsUtil = new ProfileConditionsUtil();
- const schema = profileConditionsUtil.createSchema(conditionGroups);
+ const schema = createSchema(conditionGroups);
if (typeof expectedSchema !== 'undefined') {
expect(schema.schema).toStrictEqual(expectedSchema);
}
if (Array.isArray(inputs)) {
for (const {expected, context} of inputs) {
- const normalizedContext = profileConditionsUtil.normalizeContext(context);
+ const normalizedContext = normalizeContext(context);
const actual = schema.isValid(normalizedContext);
expect(actual).toStrictEqual(expected);
}
diff --git a/test/utilities/anki.js b/test/utilities/anki.js
index e30d578f..69f4ce8b 100644
--- a/test/utilities/anki.js
+++ b/test/utilities/anki.js
@@ -16,16 +16,16 @@
*/
import {AnkiNoteBuilder} from '../../ext/js/data/anki-note-builder.js';
+import {createAnkiNoteData} from '../../ext/js/data/sandbox/anki-note-data-creator.js';
import {AnkiTemplateRenderer} from '../../ext/js/templates/sandbox/anki-template-renderer.js';
/**
- * @param {import('../../ext/js/data/sandbox/anki-note-data-creator.js').AnkiNoteDataCreator} ankiNoteDataCreator
* @param {import('dictionary').DictionaryEntry} dictionaryEntry
* @param {import('settings').ResultOutputMode} mode
* @returns {import('anki-templates').NoteData}
* @throws {Error}
*/
-export function createTestAnkiNoteData(ankiNoteDataCreator, dictionaryEntry, mode) {
+export function createTestAnkiNoteData(dictionaryEntry, mode) {
const marker = '{marker}';
/** @type {import('anki-templates-internal').CreateDetails} */
const data = {
@@ -43,7 +43,7 @@ export function createTestAnkiNoteData(ankiNoteDataCreator, dictionaryEntry, mod
},
media: {}
};
- return ankiNoteDataCreator.create(marker, data);
+ return createAnkiNoteData(marker, data);
}
/**