From e15513208584764526e2348ca7796ea665925086 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Mon, 5 Jul 2021 23:24:06 -0400 Subject: OptionsUtil and tests updates (#1801) * Update OptionsUtil.update to support an optional targetVersion param * Update Anki template updates to have an explicit target version --- test/test-options-util.js | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'test') diff --git a/test/test-options-util.js b/test/test-options-util.js index 7d86743b..986ba040 100644 --- a/test/test-options-util.js +++ b/test/test-options-util.js @@ -658,10 +658,10 @@ async function testFieldTemplatesUpdate(extDir) { {version: 12, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v12.handlebars')}, {version: 13, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v13.handlebars')} ]; - const getUpdateAdditions = (startVersion=0) => { + const getUpdateAdditions = (startVersion, targetVersion) => { let value = ''; for (const {version, changes} of updates) { - if (version < startVersion || changes.length === 0) { continue; } + if (version < startVersion || version > targetVersion || changes.length === 0) { continue; } if (value.length > 0) { value += '\n'; } value += changes; } @@ -671,6 +671,8 @@ async function testFieldTemplatesUpdate(extDir) { const data = [ // Standard format { + oldVersion: 0, + newVersion: 12, old: ` {{#*inline "character"}} {{~definition.character~}} @@ -683,11 +685,13 @@ async function testFieldTemplatesUpdate(extDir) { {{~definition.character~}} {{/inline}} -${getUpdateAdditions()} +<<>> {{~> (lookup . "marker") ~}}`.trimStart() }, // Non-standard marker format { + oldVersion: 0, + newVersion: 12, old: ` {{#*inline "character"}} {{~definition.character~}} @@ -701,19 +705,23 @@ ${getUpdateAdditions()} {{/inline}} {{~> (lookup . "marker2") ~}} -${getUpdateAdditions()}`.trimStart() +<<>>`.trimStart() }, // Empty test { + oldVersion: 0, + newVersion: 12, old: ` {{~> (lookup . "marker") ~}}`.trimStart(), expected: ` -${getUpdateAdditions()} +<<>> {{~> (lookup . "marker") ~}}`.trimStart() }, // Definition tags update { + oldVersion: 0, + newVersion: 12, old: ` {{#*inline "glossary-single"}} {{~#unless brief~}} @@ -779,13 +787,14 @@ ${getUpdateAdditions()} {{~> glossary-single definition brief=brief compactGlossaries=../compactGlossaries data=../.~}} {{/inline}} -${getUpdateAdditions()} +<<>> {{~> (lookup . "marker") ~}} `.trimStart() }, // glossary and glossary-brief update { oldVersion: 7, + newVersion: 12, old: ` {{#*inline "glossary-single"}} {{~#unless brief~}} @@ -876,11 +885,11 @@ ${getUpdateAdditions()} {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} {{~/unless~}} {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{/each}} + {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}} {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{#unless @last}} | {{/unless}}{{/each}} + {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} {{~else~}} -
    {{#each glossary}}
  • {{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}
  • {{/each}}
+
    {{#each glossary}}
  • {{#multiLine}}{{.}}{{/multiLine}}
  • {{/each}}
{{~/if~}} {{~#set "previousDictionary" dictionary~}}{{~/set~}} {{/inline}} @@ -919,12 +928,13 @@ ${getUpdateAdditions()} {{~> glossary brief=true ~}} {{/inline}} -${getUpdateAdditions(7)} +<<>> {{~> (lookup . "marker") ~}}`.trimStart() }, // formatGlossary update { oldVersion: 12, + newVersion: 13, old: ` {{~#if (op "<=" glossary.length 1)~}} {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}} @@ -945,16 +955,17 @@ ${getUpdateAdditions(7)} } ]; - for (const {old, expected, oldVersion} of data) { + const updatesPattern = /<<>>/g; + for (const {old, expected, oldVersion, newVersion} of data) { const options = createOptionsTestData1(); options.profiles[0].options.anki.fieldTemplates = old; - if (typeof oldVersion === 'number') { - options.version = oldVersion; - } + options.version = oldVersion; + + const expected2 = expected.replace(updatesPattern, getUpdateAdditions(oldVersion, newVersion)); - const optionsUpdated = clone(await optionsUtil.update(options)); + const optionsUpdated = clone(await optionsUtil.update(options, newVersion)); const fieldTemplatesActual = optionsUpdated.profiles[0].options.anki.fieldTemplates; - assert.deepStrictEqual(fieldTemplatesActual, expected); + assert.deepStrictEqual(fieldTemplatesActual, expected2); } } -- cgit v1.2.3