swedish-holidays-ts
Version:
Typescript library for calculating the date of all swedish holidays for any given year.
195 lines (194 loc) • 5.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const holidays_1 = require("../holidays");
const expectations = [
{
name: "Nyårsdagen",
day: 1,
month: 1,
year: 2020,
isPublicHoliday: true,
},
{
name: "Trettondagsafton",
day: 5,
month: 1,
year: 2020,
isPublicHoliday: false,
},
{
name: "Trettondedag jul",
day: 6,
month: 1,
year: 2020,
isPublicHoliday: true,
},
{
name: "Skärtorsdagen",
day: 9,
month: 4,
year: 2020,
isPublicHoliday: false,
},
{
name: "Långfredagen",
day: 10,
month: 4,
year: 2020,
isPublicHoliday: true,
},
{
name: "Påskafton",
day: 11,
month: 4,
year: 2020,
isPublicHoliday: false,
},
{
name: "Påskdagen",
day: 12,
month: 4,
year: 2020,
isPublicHoliday: true,
},
{
name: "Annandag påsk",
day: 13,
month: 4,
year: 2020,
isPublicHoliday: true,
},
{
name: "Valborgsmässoafton",
day: 30,
month: 4,
year: 2020,
isPublicHoliday: false,
},
{
name: "Första maj",
day: 1,
month: 5,
year: 2020,
isPublicHoliday: true,
},
{
name: "Kristi himmelsfärdsdag",
day: 21,
month: 5,
year: 2020,
isPublicHoliday: true,
},
{
name: "Pingstafton",
day: 30,
month: 5,
year: 2020,
isPublicHoliday: false,
},
{
name: "Pingstdagen",
day: 31,
month: 5,
year: 2020,
isPublicHoliday: true,
},
{
name: "Sveriges nationaldag",
day: 6,
month: 6,
year: 2020,
isPublicHoliday: true,
},
{
name: "Midsommarafton",
day: 19,
month: 6,
year: 2020,
isPublicHoliday: false,
},
{
name: "Midsommardagen",
day: 20,
month: 6,
year: 2020,
isPublicHoliday: true,
},
{
name: "Allhelgonaafton",
day: 30,
month: 10,
year: 2020,
isPublicHoliday: false,
},
{
name: "Alla helgons dag",
day: 31,
month: 10,
year: 2020,
isPublicHoliday: true,
},
{
name: "Julafton",
day: 24,
month: 12,
year: 2020,
isPublicHoliday: false,
},
{
name: "Juldagen",
day: 25,
month: 12,
year: 2020,
isPublicHoliday: true,
},
{
name: "Annandag jul",
day: 26,
month: 12,
year: 2020,
isPublicHoliday: true,
},
{
name: "Nyårsafton",
day: 31,
month: 12,
year: 2020,
isPublicHoliday: false,
},
];
(0, vitest_1.test)("Return a nice list with all holidays for 2020", () => {
const holidays = (0, holidays_1.getHolidays)(2020);
(0, vitest_1.expect)(holidays).toBeDefined();
(0, vitest_1.expect)(holidays.length).toEqual(expectations.length);
for (let i = 0; i < holidays.length; i++) {
(0, vitest_1.expect)(expectations[i].day).toEqual(holidays[i].day);
(0, vitest_1.expect)(expectations[i].month).toEqual(holidays[i].month);
(0, vitest_1.expect)(expectations[i].year).toEqual(holidays[i].year);
(0, vitest_1.expect)(expectations[i].name).toEqual(holidays[i].name);
(0, vitest_1.expect)(expectations[i].isPublicHoliday).toEqual(holidays[i].isPublicHoliday);
}
(0, vitest_1.expect)(holidays).toMatchSnapshot();
});
(0, vitest_1.test)("Identify Sunday as a public holiday", () => {
const saturdayIsNotPublicHoliday = (0, holidays_1.isPublicHoliday)(new Date("2021-11-13"));
const sundayIsPublicHoliday = (0, holidays_1.isPublicHoliday)(new Date("2021-11-14"));
const mondayIsNotPublicHoliday = (0, holidays_1.isPublicHoliday)(new Date("2021-11-15"));
(0, vitest_1.expect)(saturdayIsNotPublicHoliday).toBeFalsy();
(0, vitest_1.expect)(sundayIsPublicHoliday).toBeTruthy();
(0, vitest_1.expect)(mondayIsNotPublicHoliday).toBeFalsy();
});
(0, vitest_1.test)("Identify a public holiday as a public holiday", () => {
const christmasEve = (0, holidays_1.isPublicHoliday)(new Date("2021-12-24"));
const christmasDay = (0, holidays_1.isPublicHoliday)(new Date("2021-12-25"));
(0, vitest_1.expect)(christmasEve).toBeFalsy();
(0, vitest_1.expect)(christmasDay).toBeTruthy();
});
(0, vitest_1.test)("Handle translations", () => {
const translation = Object.assign({}, holidays_1.language);
translation.christmasEve = "Christmas Eve";
const [christmas] = (0, holidays_1.getHolidays)(2020, translation).filter((holiday) => holiday.day === 24 && holiday.month === 12);
(0, vitest_1.expect)(christmas).toBeDefined();
(0, vitest_1.expect)(christmas.name).toEqual("Christmas Eve");
});