diff --git a/backend/jest.config.js b/backend/jest.config.js index 6ab44002c..a472df316 100644 --- a/backend/jest.config.js +++ b/backend/jest.config.js @@ -5,6 +5,7 @@ module.exports = { collectCoverage: true, collectCoverageFrom: ['src/**/*.ts', '!**/node_modules/**', '!src/seeds/**', '!build/**'], setupFiles: ['/test/testSetup.ts'], + setupFilesAfterEnv: ['/test/extensions.ts'], modulePathIgnorePatterns: ['/build/'], moduleNameMapper: { '@/(.*)': '/src/$1', diff --git a/backend/src/graphql/resolver/AdminResolver.test.ts b/backend/src/graphql/resolver/AdminResolver.test.ts index 5c78e65e8..8d9e4bed0 100644 --- a/backend/src/graphql/resolver/AdminResolver.test.ts +++ b/backend/src/graphql/resolver/AdminResolver.test.ts @@ -1994,8 +1994,8 @@ describe('AdminResolver', () => { deletedAt: null, code: expect.stringMatching(/^[0-9a-f]{24,24}$/), linkEnabled: true, - // amount: '200', - // maxAmountPerMonth: '200', + amount: expect.decimalEqual(200), + maxAmountPerMonth: expect.decimalEqual(200), }), ) }) @@ -2284,7 +2284,7 @@ describe('AdminResolver', () => { id: linkId, name: 'Dokumenta 2023', memo: 'Danke für deine Teilnahme an der Dokumenta 2023', - // amount: '400', + amount: expect.decimalEqual(400), }), ) }) diff --git a/backend/test/extensions.ts b/backend/test/extensions.ts new file mode 100644 index 000000000..69c2ff7a6 --- /dev/null +++ b/backend/test/extensions.ts @@ -0,0 +1,33 @@ +/* eslint-disable @typescript-eslint/no-empty-interface */ + +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 { + decimalEqual(value: number): R +} + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace jest { + interface Expect extends CustomMatchers {} + interface Matchers extends CustomMatchers {} + interface InverseAsymmetricMatchers extends CustomMatchers {} + } +}