import { describe, it, expect } from "vitest"; import { evaluateSlippage } from "../../../src/guards/slippage.js"; import { Guard } from "../../../src/strategy.schema.js"; describe("Slippage Guard", () => { it("should pass when slippage is within limit", () => { const guard: Guard = { type: "slippage", params: { maxBps: 50, // 0.5% }, }; const context = { expectedAmount: 1000000n, actualAmount: 995000n, // 0.5% slippage }; const result = evaluateSlippage(guard, context); expect(result.passed).toBe(true); }); it("should fail when slippage exceeds limit", () => { const guard: Guard = { type: "slippage", params: { maxBps: 10, // 0.1% }, }; const context = { expectedAmount: 1000000n, actualAmount: 980000n, // 2% slippage }; const result = evaluateSlippage(guard, context); expect(result.passed).toBe(false); expect(result.reason).toContain("slippage"); }); it("should handle zero expected amount", () => { const guard: Guard = { type: "slippage", params: { maxBps: 50, }, }; const context = { expectedAmount: 0n, actualAmount: 995000n, }; const result = evaluateSlippage(guard, context); // Should fail if expected amount is zero expect(result.passed).toBe(false); expect(result.reason).toContain("zero"); }); });