test: use vitest instead of jest
This commit is contained in:
parent
7d953d5a50
commit
bb6d22d14a
12 changed files with 530 additions and 2288 deletions
|
@ -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"],
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
@ -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",
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
17
package.json
17
package.json
|
@ -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": {
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
{
|
{
|
||||||
"matchPackagePatterns": ["^@pixi"],
|
"matchPackagePatterns": ["^@pixi"],
|
||||||
"enabled": false
|
"enabled": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matchPackageNames": ["@types/node"],
|
||||||
|
"matchUpdateTypes": ["major"],
|
||||||
|
"enabled": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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.", () => {
|
||||||
|
|
|
@ -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", () => {
|
||||||
|
|
|
@ -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
11
vite.config.js
Normal 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"],
|
||||||
|
},
|
||||||
|
});
|
Loading…
Reference in a new issue