26 lines
1.1 KiB
TypeScript
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 });
|
|
});
|