import { describe, it, expect, vi, beforeEach } from "vitest"; import { BalancerAdapter } from "../../../src/adapters/balancer.js"; describe("Balancer Adapter", () => { let adapter: BalancerAdapter; let mockProvider: any; beforeEach(() => { mockProvider = { getNetwork: vi.fn().mockResolvedValue({ chainId: 1n }), call: vi.fn(), }; vi.spyOn(require("ethers"), "JsonRpcProvider").mockImplementation(() => mockProvider); vi.spyOn(require("ethers"), "Contract").mockImplementation(() => ({ swap: vi.fn(), batchSwap: vi.fn(), interface: { encodeFunctionData: vi.fn(), }, })); }); it("should encode single swap", async () => { adapter = new BalancerAdapter("mainnet"); const swapParams = { poolId: "0x...", kind: 0, // GIVEN_IN assetIn: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", assetOut: "0xdAC17F958D2ee523a2206206994597C13D831ec7", amount: 1000000n, userData: "0x", }; const data = await adapter.swap(swapParams); expect(data).toBeDefined(); expect(data.to).toBeDefined(); expect(data.data).toBeDefined(); }); it("should encode batch swap", async () => { adapter = new BalancerAdapter("mainnet"); const batchSwapParams = { kind: 0, swaps: [{ poolId: "0x...", assetInIndex: 0, assetOutIndex: 1, amount: 1000000n, userData: "0x", }], assets: [ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "0xdAC17F958D2ee523a2206206994597C13D831ec7", ], funds: { sender: "0x123", fromInternalBalance: false, recipient: "0x123", toInternalBalance: false, }, limits: [0n, 0n], deadline: Math.floor(Date.now() / 1000) + 60 * 20, }; const data = await adapter.batchSwap(batchSwapParams); expect(data).toBeDefined(); expect(data.to).toBeDefined(); expect(data.data).toBeDefined(); }); });