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

78 lines
2.0 KiB
TypeScript

import { describe, it, expect, vi, beforeEach } from "vitest";
import { MakerAdapter } from "../../../src/adapters/maker.js";
describe("MakerDAO Adapter", () => {
let adapter: MakerAdapter;
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(() => ({
open: vi.fn(),
frob: vi.fn(),
join: vi.fn(),
exit: vi.fn(),
interface: {
parseLog: vi.fn(),
},
}));
});
it("should open vault and parse CDP ID", async () => {
adapter = new MakerAdapter("mainnet");
// Mock transaction with NewCdp event
const mockReceipt = {
logs: [{
topics: ["0x...", "0x0000000000000000000000000000000000000000000000000000000000000123"],
data: "0x",
}],
};
// @ts-ignore
adapter.cdpManager.open = vi.fn().mockResolvedValue({
wait: vi.fn().mockResolvedValue(mockReceipt),
});
// @ts-ignore
adapter.cdpManager.interface.parseLog = vi.fn().mockReturnValue({
name: "NewCdp",
args: {
usr: "0x123",
own: "0x456",
cdp: 291n, // CDP ID
},
});
const cdpId = await adapter.openVault("ETH-A");
expect(cdpId).toBe(291n);
});
it("should encode frob operation", async () => {
adapter = new MakerAdapter("mainnet");
const data = await adapter.frob(291n, 1000000000000000000n, 1000n);
expect(data).toBeDefined();
});
it("should encode join operation", async () => {
adapter = new MakerAdapter("mainnet");
const data = await adapter.join(1000000n);
expect(data).toBeDefined();
});
it("should encode exit operation", async () => {
adapter = new MakerAdapter("mainnet");
const data = await adapter.exit(1000000n);
expect(data).toBeDefined();
});
});