chore: update dependencies + adapt calendar tests (#4211)

I updated dependencies (including `node-ical` to 0.27.0), which broke 2
tests. It's not a bug in `node-ical`, our code, or the tests -
`node-ical` just switched its CJS build to non-configurable getters, so
`vi.spyOn` on the module could no longer redefine them. I adjusted the
two affected tests to use real invalid input instead of mocking, keeping
the original test intention. No production code changes. Full suite
passes again.
This commit is contained in:
Kristjan ESPERANTO
2026-07-20 08:28:19 +02:00
committed by GitHub
parent f246b0facd
commit 469f3bf0cd
3 changed files with 243 additions and 640 deletions
+219 -613
View File
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -81,27 +81,27 @@
]
},
"dependencies": {
"@fontsource/roboto": "^5.2.10",
"@fontsource/roboto-condensed": "^5.2.8",
"@fortawesome/fontawesome-free": "^7.3.0",
"@fontsource/roboto": "^5.3.0",
"@fontsource/roboto-condensed": "^5.3.0",
"@fortawesome/fontawesome-free": "^7.3.1",
"animate.css": "^4.1.1",
"croner": "^10.0.1",
"eslint": "^10.6.0",
"eslint": "^10.7.0",
"express": "^5.2.1",
"feedme": "^2.0.2",
"globals": "^17.7.0",
"helmet": "^8.2.0",
"helmet": "^8.3.0",
"html-to-text": "^10.0.0",
"iconv-lite": "^0.7.3",
"ics-filter": "^1.0.3",
"ics-filter": "^1.0.4",
"ipaddr.js": "^2.4.0",
"moment": "^2.30.1",
"moment-timezone": "^0.6.2",
"node-ical": "^0.26.1",
"moment-timezone": "^0.6.3",
"node-ical": "^0.27.0",
"nunjucks": "^3.2.4",
"socket.io": "^4.8.3",
"suncalc": "^2.0.0",
"systeminformation": "^5.31.15",
"suncalc": "^2.0.1",
"systeminformation": "^5.32.0",
"undici": "^8.7.0",
"weathericons": "^2.1.0"
},
@@ -111,25 +111,25 @@
"@eslint/markdown": "^8.0.3",
"@stylistic/eslint-plugin": "^5.10.0",
"@vitest/coverage-v8": "^4.1.10",
"@vitest/eslint-plugin": "^1.6.22",
"@vitest/eslint-plugin": "^1.6.23",
"@vitest/ui": "^4.1.10",
"cspell": "^10.0.1",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-jsdoc": "^63.0.12",
"eslint-plugin-package-json": "^1.5.0",
"eslint-plugin-jsdoc": "^63.2.0",
"eslint-plugin-package-json": "^1.6.0",
"eslint-plugin-playwright": "^2.10.5",
"express-basic-auth": "^1.2.1",
"husky": "^9.1.7",
"jsdom": "^29.1.1",
"lint-staged": "^17.0.8",
"lint-staged": "^17.1.0",
"msw": "^2.15.0",
"playwright": "^1.61.1",
"prettier": "^3.9.4",
"prettier": "^3.9.5",
"prettier-plugin-jinja-template": "^2.2.0",
"vitest": "^4.1.10"
},
"optionalDependencies": {
"electron": "^43.1.0"
"electron": "^43.1.1"
},
"engines": {
"node": ">=22.22.2 <23 || >=24"
@@ -433,13 +433,12 @@ END:VCALENDAR`);
const start = moment().add(1, "hours").toDate();
const end = moment().add(2, "hours").toDate();
vi.spyOn(ical, "expandRecurringEvent").mockImplementationOnce(() => {
throw new TypeError("invalid rrule");
});
// A malformed rrule (missing .between) makes real node-ical throw inside
// expandRecurringEvent; filterEvents should catch it, skip that event, and
// still return the unaffected one. No mocking needed.
const result = CalendarFetcherUtils.filterEvents(
{
brokenEvent: { type: "VEVENT", start, end, summary: "Broken" },
brokenEvent: { type: "VEVENT", start, end, summary: "Broken", rrule: {} },
goodEvent: { type: "VEVENT", start, end, summary: "Good" }
},
defaultConfig
@@ -450,12 +449,10 @@ END:VCALENDAR`);
});
it("should let expandRecurringEvent throw through directly", () => {
vi.spyOn(ical, "expandRecurringEvent").mockImplementationOnce(() => {
throw new TypeError("invalid rrule");
});
const event = { type: "VEVENT", start: new Date(), end: new Date(), summary: "Broken Event" };
expect(() => CalendarFetcherUtils.expandRecurringEvent(event, moment(), moment().add(1, "days"))).toThrow("invalid rrule");
// A malformed rrule (missing .between) makes real node-ical throw, proving
// expandRecurringEvent propagates errors instead of swallowing them.
const event = { type: "VEVENT", start: new Date(), end: new Date(), summary: "Broken Event", rrule: {} };
expect(() => CalendarFetcherUtils.expandRecurringEvent(event, moment(), moment().add(1, "days"))).toThrow(TypeError);
});
});