diff --git a/src/__tests__/native-token.spec.ts b/src/__tests__/native-token.spec.ts new file mode 100644 index 00000000..6cd144aa --- /dev/null +++ b/src/__tests__/native-token.spec.ts @@ -0,0 +1,11 @@ +import { describe, expect, it } from "vitest"; +import { getChainConfigs } from "../utils"; + +describe.each(getChainConfigs(true).filter((c) => !!c.tokens.length))( + `Should configure native token`, + ({ name, tokens }) => { + it(name, () => { + expect(tokens.some((t) => t.type === "native")).not.toBeFalsy(); + }); + }, +); diff --git a/src/__tests__/target-chain.spec.ts b/src/__tests__/target-chain.spec.ts new file mode 100644 index 00000000..1fb0698c --- /dev/null +++ b/src/__tests__/target-chain.spec.ts @@ -0,0 +1,19 @@ +import { describe, expect, it } from "vitest"; +import { getChainConfigs } from "../utils"; + +describe.each(getChainConfigs(true).filter((c) => !!c.tokens.length))( + `Test cross's target network: $network`, + ({ network, tokens }) => { + describe.each(tokens)(`$symbol`, (token) => { + if (token.cross.length) { + it.each(token.cross)(`$target.network`, (cross) => { + expect(cross.target.network).not.toBe(network); + }); + } else { + it("Cross is empty", () => { + expect(token.cross.length).toEqual(0); + }); + } + }); + }, +); diff --git a/src/__tests__/target-token.spec.ts b/src/__tests__/target-token.spec.ts new file mode 100644 index 00000000..0c9fe30f --- /dev/null +++ b/src/__tests__/target-token.spec.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from "vitest"; +import { getChainConfig, getChainConfigs } from "../utils"; + +describe.each(getChainConfigs(true).filter((c) => !!c.tokens.length))( + `Should configure target token`, + ({ network, tokens }) => { + describe.each(tokens)(`Cross $symbol from ${network}`, (token) => { + if (token.cross.length) { + it.each(token.cross)(`to $target.network $target.symbol`, (cross) => { + expect( + getChainConfig(cross.target.network)?.tokens.find((t) => t.symbol === cross.target.symbol), + ).not.toBeUndefined(); + }); + } else { + it("Cross is empty", () => { + expect(token.cross.length).toEqual(0); + }); + } + }); + }, +); diff --git a/src/__tests__/token-decimals.spec.ts b/src/__tests__/token-decimals.spec.ts new file mode 100644 index 00000000..bfa2e884 --- /dev/null +++ b/src/__tests__/token-decimals.spec.ts @@ -0,0 +1,20 @@ +import { describe, expect, it } from "vitest"; +import { getChainConfigs } from "../utils"; +import { createPublicClient, http } from "viem"; +import abi from "../abi/erc20"; + +describe.each(getChainConfigs(true).filter((c) => !!c.tokens.length && c.network !== "taiko"))( + `Test token's decimals: $name`, + ({ tokens, ...chain }) => { + const publicClient = createPublicClient({ chain, transport: http() }); + + it.each(tokens)(`$symbol`, async (token) => { + if (token.type === "native") { + expect(token.decimals).toEqual(18); + } else { + const decimals = await publicClient.readContract({ address: token.address, abi, functionName: "decimals" }); + expect(token.decimals).toEqual(decimals); + } + }); + }, +);