107 lines
3.2 KiB
JavaScript
107 lines
3.2 KiB
JavaScript
import {
|
|
getAvailableAppointmentDatesToShow,
|
|
getAvailableDatesFromProviderDays,
|
|
} from "./schedule-helper";
|
|
|
|
describe("getAvailableDatesFromProviderDays", () => {
|
|
test("returns sorted dates that have at least one time slot", () => {
|
|
const days = [
|
|
{ date: "2026-06-16", timeSlots: [{ id: "a" }] },
|
|
{ date: "2026-06-11", timeSlots: [] },
|
|
{ date: "2026-06-14", timeSlots: [{ id: "b" }, { id: "c" }] },
|
|
];
|
|
|
|
expect(getAvailableDatesFromProviderDays(days)).toEqual(["2026-06-14", "2026-06-16"]);
|
|
});
|
|
|
|
test("returns an empty array when days is null or undefined", () => {
|
|
expect(getAvailableDatesFromProviderDays(null)).toEqual([]);
|
|
expect(getAvailableDatesFromProviderDays(undefined)).toEqual([]);
|
|
});
|
|
});
|
|
|
|
describe("getAvailableAppointmentDatesToShow", () => {
|
|
const selectedDate = "2026-06-15";
|
|
|
|
test("AC1: happy path", () => {
|
|
const available = [
|
|
"2026-06-11",
|
|
"2026-06-12",
|
|
"2026-06-13",
|
|
"2026-06-14",
|
|
"2026-06-16",
|
|
"2026-06-17",
|
|
"2026-06-18",
|
|
"2026-06-19",
|
|
"2026-06-20",
|
|
];
|
|
|
|
expect(getAvailableAppointmentDatesToShow(available, selectedDate)).toEqual([
|
|
"2026-06-11",
|
|
"2026-06-14",
|
|
"2026-06-16",
|
|
]);
|
|
});
|
|
|
|
test("AC2: no previous dates available", () => {
|
|
const available = ["2026-06-16", "2026-06-17", "2026-06-18", "2026-06-19", "2026-06-20"];
|
|
|
|
expect(getAvailableAppointmentDatesToShow(available, selectedDate)).toEqual([
|
|
"2026-06-16",
|
|
"2026-06-17",
|
|
"2026-06-18",
|
|
]);
|
|
});
|
|
|
|
test("AC3: no next dates available", () => {
|
|
const available = [
|
|
"2026-06-09",
|
|
"2026-06-10",
|
|
"2026-06-11",
|
|
"2026-06-12",
|
|
"2026-06-13",
|
|
"2026-06-14",
|
|
];
|
|
|
|
expect(getAvailableAppointmentDatesToShow(available, selectedDate)).toEqual([
|
|
"2026-06-09",
|
|
"2026-06-10",
|
|
"2026-06-14",
|
|
]);
|
|
});
|
|
|
|
test("AC4: only one previous date available and it matches earliest", () => {
|
|
const available = [
|
|
"2026-06-11",
|
|
"2026-06-16",
|
|
"2026-06-17",
|
|
"2026-06-18",
|
|
"2026-06-19",
|
|
"2026-06-20",
|
|
];
|
|
|
|
expect(getAvailableAppointmentDatesToShow(available, selectedDate)).toEqual([
|
|
"2026-06-11",
|
|
"2026-06-16",
|
|
"2026-06-17",
|
|
]);
|
|
});
|
|
|
|
test("AC5: no dates available", () => {
|
|
expect(getAvailableAppointmentDatesToShow([], selectedDate)).toEqual([]);
|
|
expect(getAvailableAppointmentDatesToShow([""], selectedDate)).toEqual([]);
|
|
expect(getAvailableAppointmentDatesToShow([], null)).toEqual([]);
|
|
});
|
|
|
|
test("AC6: only one date available", () => {
|
|
expect(getAvailableAppointmentDatesToShow(["2026-06-13"], selectedDate)).toEqual([
|
|
"2026-06-13",
|
|
]);
|
|
});
|
|
|
|
test("AC7: only two dates available", () => {
|
|
expect(
|
|
getAvailableAppointmentDatesToShow(["2026-06-11", "2026-06-12"], selectedDate)
|
|
).toEqual(["2026-06-11", "2026-06-12"]);
|
|
});
|
|
});
|