import { describe, expect, it } from "vitest"; import { sortAvailabilityStrings } from "./weekstart"; describe("Weekstart tests", () => { describe("fn: sortAvailabilityStrings", () => { it("should sort the availability strings when changing weekstart from Sunday to Monday", () => { const input = [ "Sun, 11:45 AM - 5:00 PM", "Mon, 7:45 AM - 4:15 PM", "Tue, 9:30 AM - 5:00 PM", "Wed, 9:15 AM - 5:00 PM", "Thu, 9:00 AM - 5:00 PM", "Fri, 7:45 AM - 5:00 PM", "Sat, 10:00 AM - 5:00 PM", ]; const expected = [ "Mon, 7:45 AM - 4:15 PM", "Tue, 9:30 AM - 5:00 PM", "Wed, 9:15 AM - 5:00 PM", "Thu, 9:00 AM - 5:00 PM", "Fri, 7:45 AM - 5:00 PM", "Sat, 10:00 AM - 5:00 PM", "Sun, 11:45 AM - 5:00 PM", ]; const result = input.sort(sortAvailabilityStrings("en-US", "Monday")); expect(result).toEqual(expected); }); it("should sort the availability strings when changing weekstart from Monday to Sunday", () => { const input = [ "Mon - Tue, Thu 7:45 AM - 4:15 PM", "Tue, 5:00 PM - 8:00 PM", "Wed, 9:15 AM - 5:00 PM", "Fri, 7:45 AM - 5:00 PM", "Sat, 10:00 AM - 5:00 PM", "Sun, 11:45 AM - 5:00 PM", ]; const expected = [ "Sun, 11:45 AM - 5:00 PM", "Mon - Tue, Thu 7:45 AM - 4:15 PM", "Tue, 5:00 PM - 8:00 PM", "Wed, 9:15 AM - 5:00 PM", "Fri, 7:45 AM - 5:00 PM", "Sat, 10:00 AM - 5:00 PM", ]; const result = input.sort(sortAvailabilityStrings("en-US", "Sunday")); expect(result).toEqual(expected); }); it("should sort the availability strings as per the weekstart (random to tuesday)", () => { // this input scenario is not possible to occur, as regardless of any day as start of week, // the weekdays always occur consecutively. But, this to test the sorting function in any case. const input = [ "Thu, Mon 7:45 AM - 8:45 AM", "Sat, 10:00 AM - 10:30 AM", "Tue, Fri 4:00 PM - 4:30 PM", "Tue, 5:00 PM - 8:00 PM", "Tue, Sun 9:00 AM - 9:30 AM", "Wed - Thu, Sat 11:00 AM - 11:30 AM", ]; const expected = [ "Tue, Fri 4:00 PM - 4:30 PM", "Tue, 5:00 PM - 8:00 PM", "Tue, Sun 9:00 AM - 9:30 AM", "Wed - Thu, Sat 11:00 AM - 11:30 AM", "Thu, Mon 7:45 AM - 8:45 AM", "Sat, 10:00 AM - 10:30 AM", ]; const result = input.sort(sortAvailabilityStrings("en-US", "Tuesday")); expect(result).toEqual(expected); }); }); });