refactor: improve testing setup
This commit is contained in:
parent
0c8f1e8bda
commit
de060b381e
8 changed files with 48 additions and 30 deletions
|
@ -29,5 +29,13 @@ module.exports = {
|
||||||
"@typescript-eslint/no-var-requires": "off",
|
"@typescript-eslint/no-var-requires": "off",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
files: ["./spec/**/*"],
|
||||||
|
env: {
|
||||||
|
browser: false,
|
||||||
|
},
|
||||||
|
extends: ["plugin:jest/recommended"],
|
||||||
|
plugins: ["jest"],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,11 +2,15 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
export default {
|
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
|
||||||
|
const config = {
|
||||||
preset: "ts-jest",
|
preset: "ts-jest",
|
||||||
globals: {
|
globals: {
|
||||||
"ts-jest": {
|
"ts-jest": {
|
||||||
tsconfig: "<rootDir>/spec/tsconfig.spec.json",
|
tsconfig: "<rootDir>/spec/tsconfig.json",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
setupFiles: ["<rootDir>/spec/setup.ts"],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
|
|
|
@ -2,14 +2,10 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import * as fs from "fs-extra";
|
import en from "../../lang/en.json";
|
||||||
import * as path from "path";
|
import de from "../../lang/de.json";
|
||||||
|
|
||||||
describe("English and german localization files", () => {
|
describe("English and german localization files", () => {
|
||||||
const localizationPath = "./lang/";
|
|
||||||
const en: Record<string, unknown> = fs.readJSONSync(path.join(localizationPath, "en.json"));
|
|
||||||
const de: Record<string, unknown> = fs.readJSONSync(path.join(localizationPath, "de.json"));
|
|
||||||
|
|
||||||
it("should have the same keys.", () => {
|
it("should have the same keys.", () => {
|
||||||
const deKeys = Object.keys(de);
|
const deKeys = Object.keys(de);
|
||||||
const enKeys = Object.keys(en);
|
const enKeys = Object.keys(en);
|
||||||
|
|
|
@ -5,39 +5,21 @@
|
||||||
|
|
||||||
import evaluateCheck from "../../src/rolls/check-evaluation";
|
import evaluateCheck from "../../src/rolls/check-evaluation";
|
||||||
|
|
||||||
class StubGame {
|
|
||||||
constructor() {
|
|
||||||
this.i18n = {
|
|
||||||
localize: (key: string) => key,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
i18n: {
|
|
||||||
localize: (key: string) => string;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const game = new StubGame();
|
|
||||||
|
|
||||||
Object.defineProperties(globalThis, {
|
|
||||||
game: { value: game },
|
|
||||||
Game: { value: StubGame },
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("evaluateCheck with no dice", () => {
|
describe("evaluateCheck with no dice", () => {
|
||||||
it("should throw an error.", () => {
|
it("should throw an error.", () => {
|
||||||
expect(() => evaluateCheck([], 10)).toThrow("DS4.ErrorInvalidNumberOfDice");
|
expect(() => evaluateCheck([], 10)).toThrow("Invalid number of dice.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("evaluateCheck with more dice than required by the checkTargetNumber", () => {
|
describe("evaluateCheck with more dice than required by the checkTargetNumber", () => {
|
||||||
it("should throw an error.", () => {
|
it("should throw an error.", () => {
|
||||||
expect(() => evaluateCheck([10, 10], 10)).toThrow("DS4.ErrorInvalidNumberOfDice");
|
expect(() => evaluateCheck([10, 10], 10)).toThrow("Invalid number of dice.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("evaluateCheck with less dice than required by the checkTargetNumber", () => {
|
describe("evaluateCheck with less dice than required by the checkTargetNumber", () => {
|
||||||
it("should throw an error.", () => {
|
it("should throw an error.", () => {
|
||||||
expect(() => evaluateCheck([10], 21)).toThrow("DS4.ErrorInvalidNumberOfDice");
|
expect(() => evaluateCheck([10], 21)).toThrow("Invalid number of dice.");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
27
spec/setup.ts
Normal file
27
spec/setup.ts
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
// SPDX-FileCopyrightText: 2022 Johannes Loher
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
import en from "../lang/en.json";
|
||||||
|
|
||||||
|
function setupStubs() {
|
||||||
|
class StubGame {
|
||||||
|
constructor() {
|
||||||
|
this.i18n = {
|
||||||
|
localize: (key: string) => (key in en ? en[key as keyof typeof en] : key),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
i18n: {
|
||||||
|
localize: (key: string) => string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const game = new StubGame();
|
||||||
|
|
||||||
|
Object.defineProperties(globalThis, {
|
||||||
|
game: { value: game },
|
||||||
|
Game: { value: StubGame },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
setupStubs();
|
|
@ -7,7 +7,8 @@
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"noUncheckedIndexedAccess": true
|
"noUncheckedIndexedAccess": true,
|
||||||
|
"resolveJsonModule": true
|
||||||
},
|
},
|
||||||
"include": ["src"]
|
"include": ["src"]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue