import { describe, it, expect, vi, beforeEach } from "vitest"; import { CurveAdapter } from "../../../src/adapters/curve.js"; describe("Curve Adapter", () => { let adapter: CurveAdapter; 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(() => ({ exchange: vi.fn(), exchange_underlying: vi.fn(), get_pool_from_lp_token: vi.fn(), interface: { encodeFunctionData: vi.fn(), }, })); }); it("should find pool for LP token", async () => { adapter = new CurveAdapter("mainnet"); // Mock registry response mockProvider.call = vi.fn().mockResolvedValue( "0x000000000000000000000000bebc44782c7db0a1a60cb6fe97d0b483032ff1c7" ); const pool = await adapter.findPool("0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490"); expect(pool).toBeDefined(); }); it("should encode exchange", async () => { adapter = new CurveAdapter("mainnet"); const data = await adapter.exchange( "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7", 0, 1, 1000000n, 990000n ); expect(data).toBeDefined(); expect(data.to).toBeDefined(); expect(data.data).toBeDefined(); }); it("should encode exchange_underlying", async () => { adapter = new CurveAdapter("mainnet"); const data = await adapter.exchangeUnderlying( "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7", 0, 1, 1000000n, 990000n ); expect(data).toBeDefined(); expect(data.to).toBeDefined(); expect(data.data).toBeDefined(); }); });