Initial commit: add .gitignore and README
This commit is contained in:
77
tests/unit/adapters/maker.test.ts
Normal file
77
tests/unit/adapters/maker.test.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
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();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user