UNPKG

@navikt/ds-react

Version:

React components from the Norwegian Labour and Welfare Administration.

172 lines (148 loc) 6.13 kB
import { nb } from "date-fns/locale"; import { describe, expect, test } from "vitest"; import { getMonthOptions, getYearOptions } from "./dropdown-options"; describe("getYearOptions", () => { test("should return undefined if navStart is undefined", () => { const result = getYearOptions({ navStart: undefined, navEnd: new Date(), locale: nb, }); expect(result).toBeUndefined(); }); test("should return undefined if navEnd is undefined", () => { const result = getYearOptions({ navStart: new Date(), navEnd: undefined, locale: nb, }); expect(result).toBeUndefined(); }); test("should return the correct year options within the interval", () => { const navStart = new Date(2020, 0, 1); // Januar 1, 2020 const navEnd = new Date(2022, 11, 31); // Desember 31, 2022 const result = getYearOptions({ navStart, navEnd, locale: nb }); const expected = [ { value: 2020, label: "2020", disabled: false }, { value: 2021, label: "2021", disabled: false }, { value: 2022, label: "2022", disabled: false }, ]; expect(result).toEqual(expected); }); test("should return the correct year options for a single year", () => { const navStart = new Date(2021, 0, 1); // Januar 1, 2021 const navEnd = new Date(2021, 11, 31); // Desember 31, 2021 const result = getYearOptions({ navStart, navEnd, locale: nb }); const expected = [{ value: 2021, label: "2021", disabled: false }]; expect(result).toEqual(expected); }); test("should return the correct year options when navStart and navEnd are the same date", () => { const navStart = new Date(2021, 0, 1); // Januar 1, 2021 const navEnd = new Date(2021, 0, 1); // Januar 1, 2021 const result = getYearOptions({ navStart, navEnd, locale: nb }); const expected = [{ value: 2021, label: "2021", disabled: false }]; expect(result).toEqual(expected); }); }); describe("getMonthOptions", () => { test("should return the correct month options for the given year", () => { const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021 const result = getMonthOptions({ displayMonth, navStart: undefined, navEnd: undefined, locale: nb, }); const expected = [ { value: 0, label: "januar", disabled: false }, { value: 1, label: "februar", disabled: false }, { value: 2, label: "mars", disabled: false }, { value: 3, label: "april", disabled: false }, { value: 4, label: "mai", disabled: false }, { value: 5, label: "juni", disabled: false }, { value: 6, label: "juli", disabled: false }, { value: 7, label: "august", disabled: false }, { value: 8, label: "september", disabled: false }, { value: 9, label: "oktober", disabled: false }, { value: 10, label: "november", disabled: false }, { value: 11, label: "desember", disabled: false }, ]; expect(result).toEqual(expected); }); test("should disable months before navStart", () => { const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021 const navStart = new Date(2021, 5, 1); // Juni 1, 2021 const result = getMonthOptions({ displayMonth, navStart, navEnd: undefined, locale: nb, }); const expected = [ { value: 0, label: "januar", disabled: true }, { value: 1, label: "februar", disabled: true }, { value: 2, label: "mars", disabled: true }, { value: 3, label: "april", disabled: true }, { value: 4, label: "mai", disabled: true }, { value: 5, label: "juni", disabled: false }, { value: 6, label: "juli", disabled: false }, { value: 7, label: "august", disabled: false }, { value: 8, label: "september", disabled: false }, { value: 9, label: "oktober", disabled: false }, { value: 10, label: "november", disabled: false }, { value: 11, label: "desember", disabled: false }, ]; expect(result).toEqual(expected); }); test("should disable months after navEnd", () => { const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021 const navEnd = new Date(2021, 5, 1); // Juni 1, 2021 const result = getMonthOptions({ displayMonth, navStart: undefined, navEnd, locale: nb, }); const expected = [ { value: 0, label: "januar", disabled: false }, { value: 1, label: "februar", disabled: false }, { value: 2, label: "mars", disabled: false }, { value: 3, label: "april", disabled: false }, { value: 4, label: "mai", disabled: false }, { value: 5, label: "juni", disabled: false }, { value: 6, label: "juli", disabled: true }, { value: 7, label: "august", disabled: true }, { value: 8, label: "september", disabled: true }, { value: 9, label: "oktober", disabled: true }, { value: 10, label: "november", disabled: true }, { value: 11, label: "desember", disabled: true }, ]; expect(result).toEqual(expected); }); test("should disable months before navStart and after navEnd", () => { const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021 const navStart = new Date(2021, 3, 1); // April 1, 2021 const navEnd = new Date(2021, 8, 1); // September 1, 2021 const result = getMonthOptions({ displayMonth, navStart, navEnd, locale: nb, }); const expected = [ { value: 0, label: "januar", disabled: true }, { value: 1, label: "februar", disabled: true }, { value: 2, label: "mars", disabled: true }, { value: 3, label: "april", disabled: false }, { value: 4, label: "mai", disabled: false }, { value: 5, label: "juni", disabled: false }, { value: 6, label: "juli", disabled: false }, { value: 7, label: "august", disabled: false }, { value: 8, label: "september", disabled: false }, { value: 9, label: "oktober", disabled: true }, { value: 10, label: "november", disabled: true }, { value: 11, label: "desember", disabled: true }, ]; expect(result).toEqual(expected); }); });