diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-02-22 12:07:09 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-22 12:07:09 -0500 |
commit | 0e31139734efd51799efcb6357c074059c78858d (patch) | |
tree | 87604c886aa8bfcdd1787809d6a20e3f2057597f /test/yomichan-test.js | |
parent | 174d9e7429a0f7a45538e56a594ce627239d80c3 (diff) | |
parent | 1e573f36c416b3955b2e679c8f3ce7ffa91bf504 (diff) |
Merge pull request #371 from toasted-nutbread/database-tests
Database tests
Diffstat (limited to 'test/yomichan-test.js')
-rw-r--r-- | test/yomichan-test.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/test/yomichan-test.js b/test/yomichan-test.js new file mode 100644 index 00000000..dd4da919 --- /dev/null +++ b/test/yomichan-test.js @@ -0,0 +1,59 @@ +const fs = require('fs'); +const path = require('path'); + + +let JSZip = null; + +function requireScript(fileName, exportNames, variables) { + const absoluteFileName = path.join(__dirname, '..', fileName); + const source = fs.readFileSync(absoluteFileName, {encoding: 'utf8'}); + const exportNamesString = Array.isArray(exportNames) ? exportNames.join(',') : ''; + const variablesArgumentName = '__variables__'; + let variableString = ''; + if (typeof variables === 'object' && variables !== null) { + variableString = Object.keys(variables).join(','); + variableString = `const {${variableString}} = ${variablesArgumentName};`; + } + return Function(variablesArgumentName, `'use strict';${variableString}${source}\n;return {${exportNamesString}};`)(variables); +} + +function getJSZip() { + if (JSZip === null) { + process.noDeprecation = true; // Suppress a warning about JSZip + JSZip = require(path.join(__dirname, '../ext/mixed/lib/jszip.min.js')); + process.noDeprecation = false; + } + return JSZip; +} + +function createTestDictionaryArchive(dictionaryName) { + const fileNames = [ + 'index.json', + 'tag_bank_1.json', + 'tag_bank_2.json', + 'term_bank_1.json', + 'kanji_bank_1.json', + 'term_meta_bank_1.json', + 'kanji_meta_bank_1.json' + ]; + + const archive = new (getJSZip())(); + + for (const fileName of fileNames) { + const source = fs.readFileSync(path.join(__dirname, 'test-dictionary-data', fileName), {encoding: 'utf8'}); + const json = JSON.parse(source); + if (fileName === 'index.json' && typeof dictionaryName === 'string') { + json.title = dictionaryName; + } + archive.file(fileName, JSON.stringify(json, null, 0)); + } + + return archive; +} + + +module.exports = { + requireScript, + createTestDictionaryArchive, + get JSZip() { return getJSZip(); } +}; |