import { describe, expect, it } from "vitest"; import { commissionIncomeDay, commissionIncomeMonth, commissionIncomeShares } from "./income"; describe("commission income periods", () => { it("uses Bangkok month boundaries and rolls across years", () => { const december = commissionIncomeMonth("2026-12"); expect(december.from.toISOString()).toBe("2026-11-30T17:00:00.000Z"); expect(december.to.toISOString()).toBe("2026-12-31T17:00:00.000Z"); expect(december.next).toBe("2027-01"); expect(commissionIncomeMonth("2027-01").previous).toBe("2026-12"); }); it("defaults to the current Bangkok month for an invalid query", () => { expect(commissionIncomeMonth("2026-13", new Date("2026-09-30T18:00:00Z")).month).toBe("2026-10"); }); it("assigns payments around midnight to the correct Bangkok day", () => { expect(commissionIncomeDay(new Date("2026-10-01T16:59:59Z"))).toBe(1); expect(commissionIncomeDay(new Date("2026-10-01T17:00:00Z"))).toBe(2); }); }); it("calculates Buzz and Gunshin shares in satang", () => { expect(commissionIncomeShares(101)).toEqual({ buzzSatang: 9090, gunshinSatang: 1010 }); });