Merge branch 'vitest' into 'main'

test: use vitest instead of jest

See merge request dungeonslayers/ds4!202
This commit is contained in:
Johannes Loher 2022-08-22 22:11:04 +00:00
commit e1972044e0
12 changed files with 530 additions and 2288 deletions

View file

@ -14,9 +14,9 @@ module.exports = {
browser: true, browser: true,
}, },
extends: ["plugin:@typescript-eslint/recommended", "plugin:jest/recommended", "plugin:prettier/recommended"], extends: ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
plugins: ["@typescript-eslint", "jest"], plugins: ["@typescript-eslint"],
rules: { rules: {
// Specify any specific ESLint rules. // Specify any specific ESLint rules.
@ -34,8 +34,6 @@ module.exports = {
env: { env: {
browser: false, browser: false,
}, },
extends: ["plugin:jest/recommended"],
plugins: ["jest"],
}, },
], ],
}; };

View file

@ -12,5 +12,5 @@
"importSorter.importStringConfiguration.maximumNumberOfImportExpressionsPerLine.count": 120, "importSorter.importStringConfiguration.maximumNumberOfImportExpressionsPerLine.count": 120,
"importSorter.importStringConfiguration.tabSize": 4, "importSorter.importStringConfiguration.tabSize": 4,
"importSorter.importStringConfiguration.quoteMark": "double", "importSorter.importStringConfiguration.quoteMark": "double",
"importSorter.importStringConfiguration.trailingComma": "multiLine" "importSorter.importStringConfiguration.trailingComma": "multiLine",
} }

View file

@ -1,16 +0,0 @@
// SPDX-FileCopyrightText: 2021 Johannes Loher
//
// SPDX-License-Identifier: MIT
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
const config = {
preset: "ts-jest",
globals: {
"ts-jest": {
tsconfig: "<rootDir>/spec/tsconfig.json",
},
},
setupFiles: ["<rootDir>/spec/setup.ts"],
};
export default config;

View file

@ -47,10 +47,13 @@
"clean:link": "node ./tools/link-package.js --clean", "clean:link": "node ./tools/link-package.js --clean",
"lint": "eslint --ext .ts,.js,.cjs,.mjs .", "lint": "eslint --ext .ts,.js,.cjs,.mjs .",
"lint:fix": "eslint --ext .ts,.js,.cjs,.mjs --fix .", "lint:fix": "eslint --ext .ts,.js,.cjs,.mjs --fix .",
"test": "jest",
"test:watch": "jest --watch",
"test:ci": "jest --ci --reporters=default --reporters=jest-junit",
"format": "prettier --write \"./**/*.(ts|js|cjs|mjs|json|scss|yml)\"", "format": "prettier --write \"./**/*.(ts|js|cjs|mjs|json|scss|yml)\"",
"test": "run-p test:vitest test:typecheck",
"test:vitest": "vitest run",
"test:typecheck": "tsc --noEmit --project spec/tsconfig.json",
"test:watch": "vitest",
"test:ci": "run-p test:ci:vitest test:typecheck",
"test:ci:vitest": "vitest run --reporter=default --reporter=junit --outputFile=junit.xml",
"typecheck": "tsc --noEmit", "typecheck": "tsc --noEmit",
"typecheck:watch": "tsc --noEmit --watch", "typecheck:watch": "tsc --noEmit --watch",
"bump-version": "node ./tools/bump-version.js", "bump-version": "node ./tools/bump-version.js",
@ -75,19 +78,16 @@
"@seald-io/nedb": "3.0.0", "@seald-io/nedb": "3.0.0",
"@swc/core": "1.2.241", "@swc/core": "1.2.241",
"@types/fs-extra": "9.0.13", "@types/fs-extra": "9.0.13",
"@types/jest": "28.1.7", "@types/node": "16.11.53",
"@typescript-eslint/eslint-plugin": "5.34.0", "@typescript-eslint/eslint-plugin": "5.34.0",
"@typescript-eslint/parser": "5.34.0", "@typescript-eslint/parser": "5.34.0",
"conventional-changelog-cli": "2.2.2", "conventional-changelog-cli": "2.2.2",
"conventional-changelog-conventionalcommits": "5.0.0", "conventional-changelog-conventionalcommits": "5.0.0",
"eslint": "8.22.0", "eslint": "8.22.0",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "8.5.0",
"eslint-plugin-jest": "26.8.7",
"eslint-plugin-prettier": "4.2.1", "eslint-plugin-prettier": "4.2.1",
"fs-extra": "10.1.0", "fs-extra": "10.1.0",
"husky": "8.0.1", "husky": "8.0.1",
"jest": "28.1.3",
"jest-junit": "14.0.0",
"lint-staged": "13.0.3", "lint-staged": "13.0.3",
"npm-run-all": "4.1.5", "npm-run-all": "4.1.5",
"prettier": "2.7.1", "prettier": "2.7.1",
@ -98,9 +98,10 @@
"rollup-plugin-swc3": "0.3.0", "rollup-plugin-swc3": "0.3.0",
"sass": "1.54.5", "sass": "1.54.5",
"semver": "7.3.7", "semver": "7.3.7",
"ts-jest": "28.0.8",
"tslib": "2.4.0", "tslib": "2.4.0",
"typescript": "4.7.4", "typescript": "4.7.4",
"vite": "3.0.9",
"vitest": "0.22.1",
"yargs": "17.5.1" "yargs": "17.5.1"
}, },
"lint-staged": { "lint-staged": {

View file

@ -5,6 +5,11 @@
{ {
"matchPackagePatterns": ["^@pixi"], "matchPackagePatterns": ["^@pixi"],
"enabled": false "enabled": false
},
{
"matchPackageNames": ["@types/node"],
"matchUpdateTypes": ["major"],
"enabled": false
} }
] ]
} }

View file

@ -2,11 +2,12 @@
// //
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import copy from "@guanghechen/rollup-plugin-copy";
import livereload from "rollup-plugin-livereload"; import livereload from "rollup-plugin-livereload";
import styles from "rollup-plugin-styles"; import styles from "rollup-plugin-styles";
import { swc } from "rollup-plugin-swc3"; import { swc } from "rollup-plugin-swc3";
import copy from "@guanghechen/rollup-plugin-copy";
import { distDirectory, name, sourceDirectory } from "./tools/const.js"; import { distDirectory, name, sourceDirectory } from "./tools/const.js";
import { convertJSONToPack } from "./tools/json-pack-tools.js"; import { convertJSONToPack } from "./tools/json-pack-tools.js";
@ -41,9 +42,8 @@ const config = {
}, },
plugins: [ plugins: [
swc({ swc({
minify: isProduction,
jsc: { jsc: {
minify: { minify: isProduction && {
sourceMap: true, sourceMap: true,
mangle: { mangle: {
keepClassNames: true, keepClassNames: true,

View file

@ -2,6 +2,8 @@
// //
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import { describe, expect, it } from "vitest";
import { calculateSpellPrice } from "../../../src/item/spell/calculate-spell-price"; import { calculateSpellPrice } from "../../../src/item/spell/calculate-spell-price";
import type { CooldownDuration, DS4SpellDataSourceData } from "../../../src/item/spell/spell-data-source"; import type { CooldownDuration, DS4SpellDataSourceData } from "../../../src/item/spell/spell-data-source";
@ -40,6 +42,7 @@ type TestCase = {
type CombinedTestCase = { type CombinedTestCase = {
minimumLevels: DS4SpellDataSourceData["minimumLevels"]; minimumLevels: DS4SpellDataSourceData["minimumLevels"];
expected: number | null; expected: number | null;
description: string;
}; };
const testCases: Record<keyof DS4SpellDataSourceData["minimumLevels"], TestCase[]> = { const testCases: Record<keyof DS4SpellDataSourceData["minimumLevels"], TestCase[]> = {
@ -134,13 +137,16 @@ function buildCombinedTestCases(): CombinedTestCase[] {
wizardTestCase.expected ?? Infinity, wizardTestCase.expected ?? Infinity,
) )
: null; : null;
combinedTestCases.push({ const minimumLevels = {
minimumLevels: {
healer: healerTestCase.minimumLevel, healer: healerTestCase.minimumLevel,
sorcerer: sorcererTestCase.minimumLevel, sorcerer: sorcererTestCase.minimumLevel,
wizard: wizardTestCase.minimumLevel, wizard: wizardTestCase.minimumLevel,
}, };
const description = JSON.stringify(minimumLevels);
combinedTestCases.push({
minimumLevels,
expected, expected,
description,
}); });
} }
} }
@ -151,12 +157,15 @@ function buildCombinedTestCases(): CombinedTestCase[] {
for (const spellCasterClass of ["healer", "sorcerer", "wizard"] as const) { for (const spellCasterClass of ["healer", "sorcerer", "wizard"] as const) {
for (const testCase of testCases[spellCasterClass].filter(isRelevantSingleTestCase)) { for (const testCase of testCases[spellCasterClass].filter(isRelevantSingleTestCase)) {
combinedTestCases.push({ const minimumLevels = {
minimumLevels: {
...defaultData.minimumLevels, ...defaultData.minimumLevels,
[spellCasterClass]: testCase.minimumLevel, [spellCasterClass]: testCase.minimumLevel,
}, };
const description = JSON.stringify(minimumLevels);
combinedTestCases.push({
minimumLevels,
expected: testCase.expected, expected: testCase.expected,
description,
}); });
} }
} }
@ -185,7 +194,7 @@ describe("calculateSpellPrice", () => {
}; };
it.each(buildCombinedTestCases())( it.each(buildCombinedTestCases())(
`returns ${factor} × $expected if the minimum leves are $minimumLevels`, `returns ${factor} × $expected if the minimum leves are $description`,
({ minimumLevels, expected }) => { ({ minimumLevels, expected }) => {
// given // given
const data: DS4SpellDataSourceData = { const data: DS4SpellDataSourceData = {

View file

@ -2,8 +2,10 @@
// //
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import en from "../../lang/en.json"; import { describe, expect, it } from "vitest";
import de from "../../lang/de.json"; import de from "../../lang/de.json";
import en from "../../lang/en.json";
describe("English and german localization files", () => { describe("English and german localization files", () => {
it("should have the same keys.", () => { it("should have the same keys.", () => {

View file

@ -3,6 +3,8 @@
// //
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import { describe, expect, it } from "vitest";
import evaluateCheck from "../../src/rolls/check-evaluation"; import evaluateCheck from "../../src/rolls/check-evaluation";
describe("evaluateCheck with no dice", () => { describe("evaluateCheck with no dice", () => {

View file

@ -1,7 +1,7 @@
{ {
"extends": "../tsconfig.json", "extends": "../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"types": ["@league-of-foundry-developers/foundry-vtt-types", "jest"] "types": ["@league-of-foundry-developers/foundry-vtt-types"]
}, },
"include": ["../src", "./"] "include": ["../src", "./"]
} }

11
vite.config.js Normal file
View file

@ -0,0 +1,11 @@
// SPDX-FileCopyrightText: 2022 Johannes Loher
//
// SPDX-License-Identifier: MIT
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
setupFiles: ["./spec/setup.ts"],
},
});

2718
yarn.lock

File diff suppressed because it is too large Load diff