feat: Global Jest Extension for Decimal Equal

This commit is contained in:
Moriz Wahl 2022-10-12 19:30:06 +02:00
parent 1b4c013077
commit 463f0a0601
3 changed files with 33 additions and 1 deletions

View File

@ -5,6 +5,7 @@ module.exports = {
collectCoverage: true,
collectCoverageFrom: ['src/**/*.ts', '!**/node_modules/**', '!src/seeds/**', '!build/**'],
setupFiles: ['<rootDir>/test/testSetup.ts'],
setupFilesAfterEnv: ['<rootDir>/test/extensions.ts'],
modulePathIgnorePatterns: ['<rootDir>/build/'],
moduleNameMapper: {
'@/(.*)': '<rootDir>/src/$1',

View File

@ -1990,7 +1990,7 @@ describe('AdminResolver', () => {
deletedAt: null,
code: expect.stringMatching(/^[0-9a-f]{24,24}$/),
linkEnabled: true,
// amount: '200',
amount: expect.decimalEqual(200),
// maxAmountPerMonth: '200',
}),
)

View File

@ -0,0 +1,31 @@
import Decimal from 'decimal.js-light'
expect.extend({
decimalEqual(received, value) {
const pass = new Decimal(value).equals(received.toString())
if (pass) {
return {
message: () => `expected ${received} to not equal ${value}`,
pass: true,
}
} else {
return {
message: () => `expected ${received} to equal ${value}`,
pass: false,
}
}
},
})
interface CustomMatchers<R = unknown> {
decimalEqual(value: number): R
}
declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace jest {
type Expect = CustomMatchers
type Matchers<R> = CustomMatchers<R>
type InverseAsymmetricMatchers = CustomMatchers
}
}