Rotatory anlegen: Morning-Meeting-Moderation auslosen und nach Nextcloud schreiben
Express-App mit JSON-Speicher unter VCH_DATA_DIR, Monatskalender mit Fotos, Personen mit Rollen und Teilzeit-Freitagen, Abwesenheiten, Feiertage je Bundesland, faire Zufallsauslosung mit Fixieren und Neu-Auslosen. Nextcloud: CalDAV-Discovery, Zielkalender wählbar, Termine je Werktag schreiben und aktualisieren, Abwesenheiten aus Kalender importieren, Personen samt Fotos aus dem Systemadressbuch übernehmen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
commit
95756778d8
26 files changed
+4697
No files matched your search
@@ -0,0 +1,31 @@
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { easterSunday, germanHolidays } from '../server/holidays.js';
|
||||
|
||||
test('Ostersonntag bekannter Jahre', () => {
|
||||
assert.equal(easterSunday(2024), '2024-03-31');
|
||||
assert.equal(easterSunday(2025), '2025-04-20');
|
||||
assert.equal(easterSunday(2026), '2026-04-05');
|
||||
assert.equal(easterSunday(2027), '2027-03-28');
|
||||
});
|
||||
|
||||
test('bundesweite Feiertage 2026', () => {
|
||||
const dates = Object.fromEntries(germanHolidays(2026).map((h) => [h.name, h.date]));
|
||||
assert.equal(dates['Karfreitag'], '2026-04-03');
|
||||
assert.equal(dates['Ostermontag'], '2026-04-06');
|
||||
assert.equal(dates['Christi Himmelfahrt'], '2026-05-14');
|
||||
assert.equal(dates['Pfingstmontag'], '2026-05-25');
|
||||
assert.equal(dates['Tag der Deutschen Einheit'], '2026-10-03');
|
||||
assert.equal(Object.keys(dates).length, 9);
|
||||
assert.ok(!('Fronleichnam' in dates));
|
||||
});
|
||||
|
||||
test('Landesfeiertage nur im passenden Bundesland', () => {
|
||||
const nw = germanHolidays(2026, 'NW').map((h) => h.name);
|
||||
assert.ok(nw.includes('Fronleichnam'));
|
||||
assert.ok(nw.includes('Allerheiligen'));
|
||||
assert.ok(!nw.includes('Reformationstag'));
|
||||
const sn = Object.fromEntries(germanHolidays(2026, 'SN').map((h) => [h.name, h.date]));
|
||||
assert.equal(sn['Buß- und Bettag'], '2026-11-18');
|
||||
assert.ok('Reformationstag' in sn);
|
||||
});
|
||||
Reference in new issue
Block a user