UNPKG

@frak-labs/core-sdk

Version:

Core SDK of the Frak wallet, low level library to interact directly with the frak ecosystem.

61 lines (54 loc) 1.92 kB
import { describe, expect, it } from "vitest"; import { extractMinPurchaseAmount, extractStartDate } from "./conditions"; const unix = (iso: string) => Math.floor(new Date(iso).getTime() / 1000); describe("extractMinPurchaseAmount", () => { it("reads a flat purchase.amount gte condition", () => { expect( extractMinPurchaseAmount([ { field: "purchase.amount", operator: "gte", value: 50 }, ]) ).toBe(50); }); it("walks nested groups and keeps the lowest threshold", () => { expect( extractMinPurchaseAmount({ logic: "all", conditions: [ { field: "purchase.amount", operator: "gte", value: 80 }, { logic: "any", conditions: [ { field: "purchase.amount", operator: "gt", value: 30, }, ], }, ], }) ).toBe(30); }); it("returns undefined without a purchase gate", () => { expect( extractMinPurchaseAmount([ { field: "user.isNew", operator: "eq", value: true }, ]) ).toBeUndefined(); }); }); describe("extractStartDate", () => { it("reads a time.timestamp gte condition (unix seconds)", () => { const start = extractStartDate([ { field: "time.timestamp", operator: "gte", value: unix("2025-02-01T00:00:00Z"), }, ]); expect(start?.toISOString()).toBe("2025-02-01T00:00:00.000Z"); }); it("returns undefined without a start gate", () => { expect(extractStartDate([])).toBeUndefined(); }); });