import { describe, it, expect } from 'vitest' import { occurrences } from './eventSeries.svelte' describe('occurrences', () => { it('zählt wöchentlich weiter', () => { expect(occurrences('2026-09-02', 'woechentlich', 3)).toEqual([ '2026-09-02', '2026-09-09', '2026-09-16', ]) }) it('zählt zweiwöchentlich weiter', () => { expect(occurrences('2026-09-02', 'zweiwoechentlich', 3)).toEqual([ '2026-09-02', '2026-09-16', '2026-09-30', ]) }) it('zählt monatlich weiter', () => { expect(occurrences('2026-01-15', 'monatlich', 3)).toEqual([ '2026-01-15', '2026-02-15', '2026-03-15', ]) }) it('bleibt über die Zeitumstellung hinweg auf demselben Wochentag', () => { // Ende Oktober 2026 wird in Europa die Uhr zurückgestellt; über // Millisekunden gerechnet kippte der Termin sonst auf den Vortag. const days = occurrences('2026-10-21', 'woechentlich', 3) expect(days).toEqual(['2026-10-21', '2026-10-28', '2026-11-04']) const weekdays = days.map((d) => new Date(`${d}T12:00:00Z`).getUTCDay()) expect(new Set(weekdays).size).toBe(1) }) it('hört beim Enddatum auf', () => { expect(occurrences('2026-09-02', 'woechentlich', 10, '2026-09-20')).toEqual([ '2026-09-02', '2026-09-09', '2026-09-16', ]) }) it('liefert nichts ohne Startdatum', () => { expect(occurrences('', 'woechentlich', 5)).toEqual([]) }) })