70 lines
1.8 KiB
TypeScript
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();
|
|
});
|
|
});
|
|
|