Rocky_Mountain_Vending/.pnpm-store/v10/files/22/cda2ccb89e130371658f53769b1aff866e6e10bc143334e73b12e66a08839caba4c55666a7c1fd77787c3538b165126910632329615f0466f052b7b5fbe7fc
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

144 lines
3.7 KiB
Text

import type { Locale } from "date-fns";
// Adjust the import path
import {
addDays,
addWeeks,
addMonths,
addYears,
startOfISOWeek,
endOfISOWeek,
startOfWeek,
endOfWeek
} from "date-fns";
import { DateLib } from "../classes/DateLib";
import type { DayPickerProps, MoveFocusBy, MoveFocusDir } from "../types";
import { getFocusableDate } from "./getFocusableDate";
const focusedDate = new Date(2023, 0, 1); // Jan 1, 2023
const options: Pick<DayPickerProps, "ISOWeek"> = {
ISOWeek: false
};
const dateLib = new DateLib({
weekStartsOn: 0 // Sunday
});
const calendarStartMonth = new Date(2022, 0, 1); // Jan 1, 2022
const calendarEndMonth = new Date(2024, 0, 1); // Jan 1, 2024
const testCases: {
moveBy: MoveFocusBy;
moveDir: MoveFocusDir;
expectedFn: (date: Date | number, amount: number) => Date;
}[] = [
{ moveBy: "day", moveDir: "after", expectedFn: addDays },
{ moveBy: "day", moveDir: "before", expectedFn: addDays },
{ moveBy: "month", moveDir: "after", expectedFn: addMonths },
{ moveBy: "month", moveDir: "before", expectedFn: addMonths },
{ moveBy: "week", moveDir: "after", expectedFn: addWeeks },
{ moveBy: "week", moveDir: "before", expectedFn: addWeeks },
{ moveBy: "year", moveDir: "after", expectedFn: addYears },
{ moveBy: "year", moveDir: "before", expectedFn: addYears }
];
testCases.forEach(({ moveBy, moveDir, expectedFn }) => {
test(`should move ${moveDir} by ${moveBy}`, () => {
const expectedDate = expectedFn(focusedDate, moveDir === "after" ? 1 : -1);
const result = getFocusableDate(
moveBy,
moveDir,
focusedDate,
calendarStartMonth,
calendarEndMonth,
options,
dateLib
);
expect(result).toEqual(expectedDate);
});
});
const weekTestCases: {
moveBy: MoveFocusBy;
moveDir: MoveFocusDir;
expectedFn: (
date: number | Date,
options?:
| {
locale?: Locale | undefined;
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
}
| undefined
) => Date;
}[] = [
{ moveBy: "endOfWeek", moveDir: "after", expectedFn: endOfWeek },
{ moveBy: "startOfWeek", moveDir: "after", expectedFn: startOfWeek }
];
weekTestCases.forEach(({ moveBy, moveDir, expectedFn }) => {
test(`should move ${moveDir} by ${moveBy}`, () => {
const expectedDate = expectedFn(focusedDate);
const result = getFocusableDate(
moveBy,
moveDir,
focusedDate,
calendarStartMonth,
calendarEndMonth,
options,
dateLib
);
expect(result).toEqual(expectedDate);
});
});
const ISOWeekTestCases: {
moveBy: MoveFocusBy;
moveDir: MoveFocusDir;
expectedFn: (date: Date | number) => Date;
}[] = [
{ moveBy: "endOfWeek", moveDir: "after", expectedFn: endOfISOWeek },
{ moveBy: "startOfWeek", moveDir: "after", expectedFn: startOfISOWeek }
];
ISOWeekTestCases.forEach(({ moveBy, moveDir, expectedFn }) => {
test(`should move ${moveDir} by ${moveBy} when ISOWeek is true`, () => {
const expectedDate = expectedFn(focusedDate);
const result = getFocusableDate(
moveBy,
moveDir,
focusedDate,
calendarStartMonth,
calendarEndMonth,
{ ...options, ISOWeek: true },
dateLib
);
expect(result).toEqual(expectedDate);
});
});
test("should not move before startMonth", () => {
const result = getFocusableDate(
"day",
"before",
new Date(2022, 0, 2),
calendarStartMonth,
calendarEndMonth,
options,
dateLib
);
expect(result).toEqual(calendarStartMonth);
});
test("should not move after endMonth", () => {
const result = getFocusableDate(
"day",
"after",
new Date(2023, 11, 31),
calendarStartMonth,
calendarEndMonth,
options,
dateLib
);
expect(result).toEqual(calendarEndMonth);
});