diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2024-02-14 22:26:29 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-15 03:26:29 +0000 |
commit | 6bf7b0055765c4f2011c9614753d6714dc09be65 (patch) | |
tree | 0e782ae66556eaa61a34d9f32d77c831b2443ce5 /test | |
parent | 7a4096240ce4faf70a785d047945388baa0daab3 (diff) |
Eslint rule updates (#673)
* Install unicorn
* Add rules
* Fix issues
* Install sonarjs
* Set up rules
* Fix issues
* Install eslint-plugin-import and fix import extensions
* Simplify permitted error names
Diffstat (limited to 'test')
-rw-r--r-- | test/css-json.test.js | 2 | ||||
-rw-r--r-- | test/data/html/js/html-test-utilities.js | 4 | ||||
-rw-r--r-- | test/dictionary-data-validate.test.js | 10 | ||||
-rw-r--r-- | test/document-util.test.js | 5 | ||||
-rw-r--r-- | test/dom-text-scanner.test.js | 10 | ||||
-rw-r--r-- | test/fixtures/anki-template-renderer-test.js | 1 | ||||
-rw-r--r-- | test/fixtures/translator-test.js | 1 | ||||
-rw-r--r-- | test/json.test.js | 10 | ||||
-rw-r--r-- | test/playwright/global.setup.js | 4 | ||||
-rw-r--r-- | test/playwright/global.teardown.js | 2 | ||||
-rw-r--r-- | test/playwright/integration.spec.js | 4 | ||||
-rw-r--r-- | test/playwright/visual.spec.js | 2 |
12 files changed, 30 insertions, 25 deletions
diff --git a/test/css-json.test.js b/test/css-json.test.js index b64419c3..87d24d6c 100644 --- a/test/css-json.test.js +++ b/test/css-json.test.js @@ -18,7 +18,7 @@ import fs from 'fs'; import {describe, expect, test} from 'vitest'; -import {formatRulesJson, generateRules, getTargets} from '../dev/generate-css-json'; +import {formatRulesJson, generateRules, getTargets} from '../dev/generate-css-json.js'; /** */ function main() { diff --git a/test/data/html/js/html-test-utilities.js b/test/data/html/js/html-test-utilities.js index b72b7fca..c3382456 100644 --- a/test/data/html/js/html-test-utilities.js +++ b/test/data/html/js/html-test-utilities.js @@ -16,6 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +/** + * This is a static class because this file is not imported as a module. + */ +// eslint-disable-next-line unicorn/no-static-only-class class HtmlTestUtilities { /** * @param {Element} element diff --git a/test/dictionary-data-validate.test.js b/test/dictionary-data-validate.test.js index 4c96cdb0..b09e4ae0 100644 --- a/test/dictionary-data-validate.test.js +++ b/test/dictionary-data-validate.test.js @@ -48,11 +48,11 @@ describe('Dictionary validation', () => { describe.each(testCases)('Test dictionary $name', ({name, valid}) => { it(`should be ${valid ? 'valid' : 'invalid'}`, async ({expect}) => { const archive = createTestDictionaryArchive(name); - if (valid) { - await expect(dictionaryValidate.validateDictionary(null, archive, schemas)).resolves.not.toThrow(); - } else { - await expect(dictionaryValidate.validateDictionary(null, archive, schemas)).rejects.toThrow(); - } + await ( + valid ? + expect(dictionaryValidate.validateDictionary(null, archive, schemas)).resolves.not.toThrow() : + expect(dictionaryValidate.validateDictionary(null, archive, schemas)).rejects.toThrow() + ); }); }); }); diff --git a/test/document-util.test.js b/test/document-util.test.js index 18a5d42c..c2b2edca 100644 --- a/test/document-util.test.js +++ b/test/document-util.test.js @@ -159,12 +159,13 @@ describe('Document utility tests', () => { expect(!!imposter).toStrictEqual(!!hasImposter); const range = document.createRange(); - range.setStart(/** @type {Node} */ (imposter ? imposter : startNode), startOffset); - range.setEnd(/** @type {Node} */ (imposter ? imposter : startNode), endOffset); + range.setStart(/** @type {Node} */ (imposter ?? startNode), startOffset); + range.setEnd(/** @type {Node} */ (imposter ?? startNode), endOffset); // Override getClientRects to return a rect guaranteed to contain (x, y) range.getClientRects = () => { /** @type {import('test/document-types').PseudoDOMRectList} */ + // eslint-disable-next-line sonarjs/prefer-immediate-return const domRectList = Object.assign( [new DOMRect(x - 1, y - 1, 2, 2)], { diff --git a/test/dom-text-scanner.test.js b/test/dom-text-scanner.test.js index e86d2980..1ec7cab7 100644 --- a/test/dom-text-scanner.test.js +++ b/test/dom-text-scanner.test.js @@ -34,7 +34,7 @@ function querySelectorTextNode(element, selector) { let textIndex = -1; const match = /::text$|::nth-text\((\d+)\)$/.exec(selector); if (match !== null) { - textIndex = (match[1] ? parseInt(match[1], 10) - 1 : 0); + textIndex = (match[1] ? Number.parseInt(match[1], 10) - 1 : 0); selector = selector.substring(0, selector.length - match[0].length); } const result = element.querySelector(selector); @@ -67,13 +67,11 @@ function getComputedFontSizeInPixels(window, getComputedStyle, element) { if (element.nodeType === window.Node.ELEMENT_NODE) { const fontSize = getComputedStyle(/** @type {Element} */ (element)).fontSize; if (fontSize.endsWith('px')) { - const value = parseFloat(fontSize.substring(0, fontSize.length - 2)); - return value; + return Number.parseFloat(fontSize.substring(0, fontSize.length - 2)); } } } - const defaultFontSize = 14; - return defaultFontSize; + return 14; // Default font size } /** @@ -92,7 +90,7 @@ function createAbsoluteGetComputedStyle(window) { if (typeof result === 'string') { result = result.replace(/([-+]?\d(?:\.\d)?(?:[eE][-+]?\d+)?)em/g, (g0, g1) => { const fontSize = getComputedFontSizeInPixels(window, getComputedStyleOld, element); - return `${parseFloat(g1) * fontSize}px`; + return `${Number.parseFloat(g1) * fontSize}px`; }); } return result; diff --git a/test/fixtures/anki-template-renderer-test.js b/test/fixtures/anki-template-renderer-test.js index de447126..635e0b7d 100644 --- a/test/fixtures/anki-template-renderer-test.js +++ b/test/fixtures/anki-template-renderer-test.js @@ -30,6 +30,7 @@ export async function createAnkiTemplateRendererTest() { const ankiTemplateRenderer = new AnkiTemplateRenderer(); await ankiTemplateRenderer.prepare(); /** @type {import('vitest').TestAPI<{window: import('jsdom').DOMWindow, ankiTemplateRenderer: AnkiTemplateRenderer}>} */ + // eslint-disable-next-line sonarjs/prefer-immediate-return const result = test.extend({ window: async ({window}, use) => { await use(window); }, ankiTemplateRenderer: async ({window}, use) => { diff --git a/test/fixtures/translator-test.js b/test/fixtures/translator-test.js index a4c65b88..f39d832b 100644 --- a/test/fixtures/translator-test.js +++ b/test/fixtures/translator-test.js @@ -81,6 +81,7 @@ export async function createTranslatorTest(htmlFilePath, dictionaryDirectory, di const test = createDomTest(htmlFilePath); const translator = await createTranslatorContext(dictionaryDirectory, dictionaryName); /** @type {import('vitest').TestAPI<{window: import('jsdom').DOMWindow, translator: Translator}>} */ + // eslint-disable-next-line sonarjs/prefer-immediate-return const result = test.extend({ window: async ({window}, use) => { await use(window); }, // eslint-disable-next-line no-empty-pattern diff --git a/test/json.test.js b/test/json.test.js index 0689913a..aa12dc09 100644 --- a/test/json.test.js +++ b/test/json.test.js @@ -110,11 +110,11 @@ describe.concurrent('JSON validation', () => { const existingJsonFiles = getAllFiles(rootDir, (path, isDirectory) => { const fileNameNormalized = normalizePathDirectorySeparators(path); - if (isDirectory) { - return !ignoreDirectories.has(fileNameNormalized); - } else { - return /\.json$/i.test(fileNameNormalized); - } + return ( + isDirectory ? + !ignoreDirectories.has(fileNameNormalized) : + /\.json$/i.test(fileNameNormalized) + ); }); /** @type {Set<string>} */ const existingJsonFileSet = new Set(); diff --git a/test/playwright/global.setup.js b/test/playwright/global.setup.js index 8c2f8b50..63452397 100644 --- a/test/playwright/global.setup.js +++ b/test/playwright/global.setup.js @@ -18,8 +18,8 @@ import {test as setup} from '@playwright/test'; import fs from 'fs'; import path from 'path'; -import {ManifestUtil} from '../../dev/manifest-util'; -import {root} from './playwright-util'; +import {ManifestUtil} from '../../dev/manifest-util.js'; +import {root} from './playwright-util.js'; const manifestPath = path.join(root, 'ext/manifest.json'); const copyManifestPath = path.join(root, 'ext/manifest-old.json'); diff --git a/test/playwright/global.teardown.js b/test/playwright/global.teardown.js index f3d8897f..e747e5fd 100644 --- a/test/playwright/global.teardown.js +++ b/test/playwright/global.teardown.js @@ -18,7 +18,7 @@ import {test as teardown} from '@playwright/test'; import fs from 'fs'; import path from 'path'; -import {root} from './playwright-util'; +import {root} from './playwright-util.js'; const manifestPath = path.join(root, 'ext/manifest.json'); const copyManifestPath = path.join(root, 'ext/manifest-old.json'); diff --git a/test/playwright/integration.spec.js b/test/playwright/integration.spec.js index bdcfddf0..170714a1 100644 --- a/test/playwright/integration.spec.js +++ b/test/playwright/integration.spec.js @@ -16,7 +16,7 @@ */ import path from 'path'; -import {createDictionaryArchive} from '../../dev/util'; +import {createDictionaryArchive} from '../../dev/util.js'; import { expect, expectedAddNoteBody, @@ -26,7 +26,7 @@ import { root, test, writeToClipboardFromPage -} from './playwright-util'; +} from './playwright-util.js'; test.beforeEach(async ({context}) => { // Wait for the on-install welcome.html tab to load, which becomes the foreground tab diff --git a/test/playwright/visual.spec.js b/test/playwright/visual.spec.js index cc2a50d0..fc8bb8df 100644 --- a/test/playwright/visual.spec.js +++ b/test/playwright/visual.spec.js @@ -17,7 +17,7 @@ import path from 'path'; import {pathToFileURL} from 'url'; -import {expect, root, test} from './playwright-util'; +import {expect, root, test} from './playwright-util.js'; test.beforeEach(async ({context}) => { // Wait for the on-install welcome.html tab to load, which becomes the foreground tab |