38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import {
|
|
calendarPickerOptions,
|
|
calendarPickerTenantId,
|
|
type CalendarPickerOption
|
|
} from "../src/features/calendar/calendarPickerLogic";
|
|
|
|
function assert(condition: unknown, message: string): void {
|
|
if (!condition) throw new Error(message);
|
|
}
|
|
|
|
function calendar(id: string, name: string, isDefault = false): CalendarPickerOption {
|
|
return {
|
|
id,
|
|
name,
|
|
is_default: isDefault
|
|
};
|
|
}
|
|
|
|
const input = [
|
|
calendar("z", "Zulu"),
|
|
calendar("b", "Bravo", true),
|
|
calendar("a", "alpha")
|
|
];
|
|
const ordered = calendarPickerOptions(input);
|
|
|
|
assert(ordered.map((item) => item.id).join(",") === "b,a,z", "default calendar should lead, followed by names");
|
|
assert(input.map((item) => item.id).join(",") === "z,b,a", "picker sorting must not mutate API data");
|
|
assert(
|
|
calendarPickerTenantId({ tenant: { id: "fallback" }, active_tenant: { id: "active" } }) === "active",
|
|
"active tenant should partition picker requests"
|
|
);
|
|
assert(
|
|
calendarPickerTenantId({ tenant: { id: "fallback" } }) === "fallback",
|
|
"legacy tenant should remain a supported fallback"
|
|
);
|
|
|
|
console.log("Calendar picker behavior checks passed.");
|