78 lines
2.0 KiB
TypeScript
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();
|
|
});
|
|
});
|
|
|