From 576dece97e6546aea774d1bac4a05b7854c512a4 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Mon, 5 Feb 2024 06:16:00 -0500 Subject: Reduce repeated anki field marker code (#632) * Unify repeated code for getting anki field markers * Throw because type safety exists * Simplify * Update order * Update test data --- test/utilities/anki.js | 100 ++++++++----------------------------------------- 1 file changed, 16 insertions(+), 84 deletions(-) (limited to 'test/utilities/anki.js') diff --git a/test/utilities/anki.js b/test/utilities/anki.js index 4c6c6d57..9f9bfef3 100644 --- a/test/utilities/anki.js +++ b/test/utilities/anki.js @@ -16,9 +16,23 @@ */ import {AnkiNoteBuilder} from '../../ext/js/data/anki-note-builder.js'; +import {getStandardFieldMarkers} from '../../ext/js/data/anki-template-util.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('dictionary').DictionaryEntryType} type + * @returns {import('anki-note-builder').Field[]} + */ +function createTestFields(type) { + /** @type {import('anki-note-builder').Field[]} */ + const fields = []; + for (const marker of getStandardFieldMarkers(type)) { + fields.push([marker, `{${marker}}`]); + } + return fields; +} + /** * @param {import('dictionary').DictionaryEntry} dictionaryEntry * @param {import('settings').ResultOutputMode} mode @@ -46,96 +60,14 @@ export function createTestAnkiNoteData(dictionaryEntry, mode) { return createAnkiNoteData(marker, data); } -/** - * @param {'terms'|'kanji'} type - * @returns {string[]} - */ -function getFieldMarkers(type) { - switch (type) { - case 'terms': - return [ - 'audio', - 'clipboard-image', - 'clipboard-text', - 'cloze-body', - 'cloze-prefix', - 'cloze-suffix', - 'conjugation', - 'dictionary', - 'document-title', - 'expression', - 'frequencies', - 'frequency-harmonic-rank', - 'frequency-harmonic-occurrence', - 'frequency-average-rank', - 'frequency-average-occurrence', - 'furigana', - 'furigana-plain', - 'glossary', - 'glossary-brief', - 'glossary-no-dictionary', - 'part-of-speech', - 'pitch-accents', - 'pitch-accent-graphs', - 'pitch-accent-positions', - 'phonetic-transcriptions', - 'reading', - 'screenshot', - 'search-query', - 'selection-text', - 'sentence', - 'sentence-furigana', - 'tags', - 'url' - ]; - case 'kanji': - return [ - 'character', - 'clipboard-image', - 'clipboard-text', - 'cloze-body', - 'cloze-prefix', - 'cloze-suffix', - 'dictionary', - 'document-title', - 'frequencies', - 'frequency-harmonic-rank', - 'frequency-harmonic-occurrence', - 'frequency-average-rank', - 'frequency-average-occurrence', - 'glossary', - 'kunyomi', - 'onyomi', - 'screenshot', - 'search-query', - 'selection-text', - 'sentence', - 'sentence-furigana', - 'stroke-count', - 'tags', - 'url' - ]; - default: - return []; - } -} - /** * @param {import('dictionary').DictionaryEntry[]} dictionaryEntries - * @param {'terms'|'kanji'} type * @param {import('settings').ResultOutputMode} mode * @param {string} template * @param {?import('vitest').ExpectStatic} expect * @returns {Promise} */ -export async function getTemplateRenderResults(dictionaryEntries, type, mode, template, expect) { - const markers = getFieldMarkers(type); - /** @type {import('anki-note-builder').Field[]} */ - const fields = []; - for (const marker of markers) { - fields.push([marker, `{${marker}}`]); - } - +export async function getTemplateRenderResults(dictionaryEntries, mode, template, expect) { const ankiTemplateRenderer = new AnkiTemplateRenderer(); await ankiTemplateRenderer.prepare(); const clozePrefix = 'cloze-prefix'; @@ -173,7 +105,7 @@ export async function getTemplateRenderResults(dictionaryEntries, type, mode, te template, deckName: 'deckName', modelName: 'modelName', - fields, + fields: createTestFields(dictionaryEntry.type), tags: ['yomitan'], checkForDuplicates: true, duplicateScope: 'collection', -- cgit v1.2.3