import { describe, it, expect, vi, beforeEach } from "vitest"; import { PerpsAdapter } from "../../../src/adapters/perps.js"; describe("Perps Adapter", () => { let adapter: PerpsAdapter; 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(() => ({ increasePosition: vi.fn(), decreasePosition: vi.fn(), interface: { encodeFunctionData: vi.fn(), }, })); }); it("should encode increase position", async () => { adapter = new PerpsAdapter("mainnet"); const params = { path: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"], indexToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7", amountIn: 1000000n, minOut: 990000n, sizeDelta: 2000000n, isLong: true, acceptablePrice: 1000000n, }; const data = await adapter.increasePosition(params); expect(data).toBeDefined(); expect(data.to).toBeDefined(); expect(data.data).toBeDefined(); }); it("should encode decrease position", async () => { adapter = new PerpsAdapter("mainnet"); const params = { path: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"], indexToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7", collateralDelta: 500000n, sizeDelta: 1000000n, isLong: true, receiver: "0x123", acceptablePrice: 1000000n, }; const data = await adapter.decreasePosition(params); expect(data).toBeDefined(); expect(data.to).toBeDefined(); expect(data.data).toBeDefined(); }); });