diff options
author | StefanVukovic99 <stefanvukovic44@gmail.com> | 2024-02-12 07:18:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-12 06:18:48 +0000 |
commit | 043ac79203abbc9c7f3aa971e2de8ddedb3c0e90 (patch) | |
tree | 6cb600115b9ea7388e8ed15fc2016697b31e9f8b /test/options-util.test.js | |
parent | fd48f18f8aa05a362f3168cbddcc03659e7510db (diff) |
add cumulative handlebars upgrades test (#672)
* add cumulative test
* undo delete line
* old templates from v2 to v1
* move test handlebars data to templates folder
---------
Co-authored-by: Darius Jahandarie <djahandarie@gmail.com>
Diffstat (limited to 'test/options-util.test.js')
-rw-r--r-- | test/options-util.test.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/options-util.test.js b/test/options-util.test.js index 8fe0e212..78ac0009 100644 --- a/test/options-util.test.js +++ b/test/options-util.test.js @@ -628,6 +628,42 @@ async function testUpdate() { } /** */ +async function testCumulativeFieldTemplatesUpdates() { + /** + * @param {string} templates + * @returns {Map<string, string>} + */ + const getHandlebarsPartials = (templates) => { + const inlinePartialRegex = /{{~?#\*inline .*?"([^"]*)"~?}}.*?{{~?\/inline~?}}/gs; + const matches = templates.matchAll(inlinePartialRegex); + const partials = new Map(); + for (const match of matches) { + const [template, name] = match; + partials.set(name, template); + } + return partials; + }; + test('CumulativeFieldTemplatesUpdates', async () => { + const optionsUtil = new OptionsUtil(); + await optionsUtil.prepare(); + + const options = /** @type {import('core').SafeAny} */ (createOptionsTestData1()); + + const oldAnkiFieldTemplates = fs.readFileSync(path.join(dirname, 'data', 'templates', 'old-default-anki-field-templates.handlebars'), {encoding: 'utf8'}); + const defaultAnkiFieldTemplates = fs.readFileSync(path.join(dirname, '..', 'ext', 'data', 'templates', 'default-anki-field-templates.handlebars'), {encoding: 'utf8'}); + + options.profiles[0].options.anki.fieldTemplates = oldAnkiFieldTemplates; + const optionsUpdated = structuredClone(await optionsUtil.update(options)); + const fieldTemplatesUpdated = optionsUpdated.profiles[0].options.anki.fieldTemplates || ''; + + const partialsUpdated = getHandlebarsPartials(fieldTemplatesUpdated); + const partialsExpected = getHandlebarsPartials(defaultAnkiFieldTemplates); + + expect(partialsUpdated).toStrictEqual(partialsExpected); + }); +} + +/** */ async function testDefault() { describe('Default', () => { /** @type {((options: import('options-util').IntermediateOptions) => void)[]} */ @@ -1697,6 +1733,7 @@ async function main() { await testUpdate(); await testDefault(); await testFieldTemplatesUpdate(); + await testCumulativeFieldTemplatesUpdates(); } await main(); |