From 463f0a060111430a9408dda632cb068941232117 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 Oct 2022 19:30:06 +0200 Subject: [PATCH] feat: Global Jest Extension for Decimal Equal --- backend/jest.config.js | 1 + .../graphql/resolver/AdminResolver.test.ts | 2 +- backend/test/extensions.ts | 31 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 backend/test/extensions.ts 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 b1b4e469e..34888b2df 100644 --- a/backend/src/graphql/resolver/AdminResolver.test.ts +++ b/backend/src/graphql/resolver/AdminResolver.test.ts @@ -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', }), ) diff --git a/backend/test/extensions.ts b/backend/test/extensions.ts new file mode 100644 index 000000000..49a92f521 --- /dev/null +++ b/backend/test/extensions.ts @@ -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 { + decimalEqual(value: number): R +} + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace jest { + type Expect = CustomMatchers + type Matchers = CustomMatchers + type InverseAsymmetricMatchers = CustomMatchers + } +}