Files
gunshiz 643e77a88f
CI / Verify (push) Successful in 2m50s
CI / Build immutable images and deploy (push) Successful in 2m26s
feat : add monthly
2026-10-04 15:29:02 +07:00

26 lines
1.1 KiB
TypeScript

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