Files
strategic/tests/unit/adapters/balancer.test.ts
2026-02-09 21:51:54 -08:00

75 lines
2.0 KiB
TypeScript

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();
});
});