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

61 lines
1.4 KiB
TypeScript

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");
});
});