Skip to content

Commit

Permalink
chore: integrate vitest matchers globally (#3425)
Browse files Browse the repository at this point in the history
* feat: integrate vitest matchers globally

* fix: added global type file & changed setup file directory

* docs: improve `cookbook/transaction-request` (#3440)

* chore: silence recipes format logs (#3451)

* chore: silence recipe logs

* chore: update changeset

* docs: fix api links (#3452)

* docs: fixing API links

* chore: fixing relative links

* fix: `transferToContract` method now allows big numbers (#3458)

* fix: incorrectly converting BN to number for `formatTransferToContractScriptData`

* chore: changeset

* chore: tests

* chore: added test for batch transfer

* fix: moved vitest matcher setup from fuel-gauge to utils

* fix(utils): update vitest matcher import path

* chore: add changeset for vitest matcher changes

* fix: removed previous changeset

* chore: removed types

* chore: added changeset

* Update .changeset/rare-hornets-rush.md

---------

Co-authored-by: Sérgio Torres <[email protected]>
Co-authored-by: Daniel Bate <[email protected]>
Co-authored-by: Peter Smith <[email protected]>
  • Loading branch information
4 people authored Dec 10, 2024
1 parent a3842a5 commit 896bf5b
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 32 deletions.
5 changes: 5 additions & 0 deletions .changeset/rare-hornets-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fuel-ts/utils": patch
---

chore: integrate vitest matchers globally
12 changes: 0 additions & 12 deletions packages/fuel-gauge/src/abi/abi-coder.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@ import {
U8_MAX,
U8_MIN,
} from './constants';
import { toEqualBn } from './vitest.matcher';

expect.extend({ toEqualBn });

/**
* @group browser
Expand Down Expand Up @@ -761,7 +758,6 @@ describe('AbiCoder', () => {

const EXPECTED_STRUCT = {
a: {
// @ts-expect-error: Custom matcher 'toEqualBn'
a: expect.toEqualBn(20),
},
b: 'B',
Expand Down Expand Up @@ -885,7 +881,6 @@ describe('AbiCoder', () => {
describe('types_struct_with_tuple', () => {
it('should encode/decode just fine', async () => {
const input: StructSingleGenericInput<[boolean, BigNumberish]> = { a: [true, 10] };
// @ts-expect-error: Custom matcher 'toEqualBn'
const expected = { a: [false, expect.toEqualBn(20)] };

const { waitForResult } = await contract.functions.types_struct_with_tuple(input).call();
Expand Down Expand Up @@ -942,7 +937,6 @@ describe('AbiCoder', () => {
describe('types_struct_external', () => {
it('should encode/decode just fine', async () => {
const input = { value: 10 };
// @ts-expect-error: Custom matcher 'toEqualBn'
const expected = { value: expect.toEqualBn(20) };

const { waitForResult } = await contract.functions.types_struct_external(input).call();
Expand Down Expand Up @@ -1136,7 +1130,6 @@ describe('AbiCoder', () => {
it('should encode/decode just fine', async () => {
const INPUT_STRUCT = { a: { a: 10 }, b: 'A' };
const input: StructWithNestedArrayInput = { a: [INPUT_STRUCT, INPUT_STRUCT] };
// @ts-expect-error: Custom matcher 'toEqualBn'
const EXPECTED_STRUCT = { a: { a: expect.toEqualBn(20) }, b: 'B' };
const EXPECTED = { a: [EXPECTED_STRUCT, EXPECTED_STRUCT] };

Expand Down Expand Up @@ -1170,7 +1163,6 @@ describe('AbiCoder', () => {
describe('types_struct_with_nested_tuple', () => {
it('should encode/decode just fine', async () => {
const input: StructWithNestedTupleInput = { a: [10, { a: { a: 20 } }, 'ABC'] };
// @ts-expect-error: Custom matcher 'toEqualBn'
const expected = { a: [30, { a: { a: expect.toEqualBn(40) } }, 'CBA'] };

const { waitForResult } = await contract.functions
Expand Down Expand Up @@ -1375,7 +1367,6 @@ describe('AbiCoder', () => {
StructSingleGenericInput<StructSingleGenericInput<BigNumberish>>,
string,
];
// @ts-expect-error: Custom matcher 'toEqualBn'
const expected = [3, { a: { a: expect.toEqualBn(30) } }, 'CBA'];

const { waitForResult } = await contract.functions.types_tuple_complex(input).call();
Expand Down Expand Up @@ -1505,7 +1496,6 @@ describe('AbiCoder', () => {
describe('types_enum_with_builtin_type', () => {
it('should encode/decode just fine', async () => {
const input: EnumWithBuiltinTypeInput = { a: true };
// @ts-expect-error: Custom matcher 'toEqualBn'
const expected: EnumWithBuiltinTypeOutput = { b: expect.toEqualBn(20) };

const { waitForResult } = await contract.functions.types_enum_with_builtin_type(input).call();
Expand Down Expand Up @@ -2053,7 +2043,6 @@ describe('AbiCoder', () => {
Ok: 10,
};
const expected: Result<BigNumberish, BigNumberish> = {
// @ts-expect-error: Custom matcher 'toEqualBn'
Ok: expect.toEqualBn(2),
};

Expand Down Expand Up @@ -2292,7 +2281,6 @@ describe('AbiCoder', () => {
it('should encode/decode just fine', async () => {
const inputX = 1;
const inputY = 2;
// @ts-expect-error: Custom matcher 'toEqualBn'
const expected = expect.toEqualBn(3);

const { waitForResult } = await contract.functions.multi_arg_u64_u64(inputX, inputY).call();
Expand Down
20 changes: 0 additions & 20 deletions packages/fuel-gauge/src/abi/vitest.matcher.ts

This file was deleted.

1 change: 1 addition & 0 deletions packages/utils/src/test-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ export * from './test-utils/getForcProject';
export * from './test-utils/expectToBeInRange';
export * from './test-utils/constants';
export * from './test-utils/wait-until-unreachable';
export * from './test-utils/vitest.matchers';
37 changes: 37 additions & 0 deletions packages/utils/src/test-utils/vitest.matchers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { bn } from '@fuel-ts/math';
import type { BN, BNInput } from '@fuel-ts/math';

interface Matchers<R = BN> {
toEqualBn: (expected: BNInput) => R;
}
declare module 'vitest' {
interface Assertion extends Matchers {}
interface AsymmetricMatchersContaining extends Matchers {}
interface ExpectStatic {
toEqualBn(expected: BNInput): BN;
}
}

export const setupTestMatchers = () => {
expect.extend({
toEqualBn(received: BNInput, expected: BNInput) {
const actualBn = bn(received);
const expectedBn = bn(expected);
const pass = actualBn.eq(expectedBn);

if (pass) {
return {
pass,
message: () => `Expected ${actualBn} not to equal ${expectedBn}`,
actual: actualBn,
};
}

return {
pass,
message: () => `Expected ${actualBn} to equal ${expectedBn}`,
actual: expectedBn,
};
},
});
};
3 changes: 3 additions & 0 deletions vitest.setup-files.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { setupTestMatchers } from '@fuel-ts/utils/test-utils';

setupTestMatchers();
1 change: 1 addition & 0 deletions vitest.shared.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export default defineConfig({
esbuild: { target: "es2022" },
test: {
globalSetup: ["vitest.global-setup.ts"],
setupFiles: ["./vitest.setup-files.ts"],
coverage: {
enabled: true,
provider: "istanbul",
Expand Down

0 comments on commit 896bf5b

Please sign in to comment.