Rocky_Mountain_Vending/.pnpm-store/v10/files/77/b34912b950d0a6a3e5cda122f569c1f09cdd92e39a2f33d34b13fd4a54bed4d3f7ebf5224efc868440c8be3956504f7ad933a3c351b90c4e0fa7879558eacd
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

88 lines
2.7 KiB
Text

import { CalendarMonth } from "../classes";
import { DateLib } from "../classes/DateLib";
import type { DayPickerProps } from "../types";
import { getMonths } from "./getMonths";
const mockDates = [
new Date(2023, 4, 27), // May 1, 2023
new Date(2023, 5, 1), // June 1, 2023
new Date(2023, 5, 8), // June 2, 2023
new Date(2023, 5, 15), // June 15, 2023
new Date(2023, 5, 22), // June 22, 2023
new Date(2023, 5, 30), // June 30, 2023
new Date(2023, 6, 6) // June 30, 2023
];
const mockProps: Pick<
DayPickerProps,
"fixedWeeks" | "ISOWeek" | "reverseMonths"
> = {
fixedWeeks: false,
ISOWeek: false,
reverseMonths: false
};
const dateLib = new DateLib({
weekStartsOn: 0, // Sunday
firstWeekContainsDate: 1
});
it("should return the correct months without ISO weeks and reverse months", () => {
const displayMonths = [new Date(2023, 5, 1)]; // June 2023
const result = getMonths(displayMonths, mockDates, mockProps, dateLib);
expect(result).toHaveLength(1);
expect(result[0]).toBeInstanceOf(CalendarMonth);
expect(result[0].weeks).toHaveLength(5); // June 2023 has 5 weeks
});
it("should handle ISO weeks", () => {
const displayMonths = [new Date(2023, 5, 1)]; // June 2023
const isoProps = { ...mockProps, ISOWeek: true };
const result = getMonths(displayMonths, mockDates, isoProps, dateLib);
expect(result).toHaveLength(1);
expect(result[0]).toBeInstanceOf(CalendarMonth);
expect(result[0].weeks).toHaveLength(5); // June 2023 has 5 ISO weeks
});
it("should handle reverse months", () => {
const displayMonths = [
new Date(2023, 4, 1), // May 2023
new Date(2023, 5, 1) // June 2023
];
const reverseProps = { ...mockProps, reverseMonths: true };
const result = getMonths(displayMonths, mockDates, reverseProps, dateLib);
expect(result).toHaveLength(2);
expect(result[0].date).toEqual(new Date(2023, 5, 1)); // June 2023
expect(result[1].date).toEqual(new Date(2023, 4, 1)); // May 2023
});
it("should handle fixed weeks", () => {
const displayMonths = [new Date(2023, 5, 1)]; // June 2023
const fixedWeeksProps = { ...mockProps, fixedWeeks: true };
const result = getMonths(displayMonths, mockDates, fixedWeeksProps, dateLib);
expect(result).toHaveLength(1);
expect(result[0]).toBeInstanceOf(CalendarMonth);
expect(result[0].weeks).toHaveLength(6); // Fixed weeks should ensure 6 weeks in the month view
});
it("should handle months with no dates", () => {
const displayMonths = [new Date(2023, 5, 1)]; // June 2023
const result = getMonths(displayMonths, [], mockProps, dateLib);
expect(result).toHaveLength(1);
expect(result[0]).toBeInstanceOf(CalendarMonth);
expect(result[0].weeks).toHaveLength(0); // No dates should result in no weeks
});