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

70 lines
1.8 KiB
TypeScript

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