import { describe, expect, it } from 'vitest' import { WERT_VERALTET_TAGE, wertalterBestimmen, wertVeraltet, } from '@/lib/finanzen/wertalter' /** * Das Alter eines Rueckkaufswerts. * * Die Grenze ist eine fachliche Aussage, keine Zierde: Ein Wert, der den * letzten Jahresbericht ueberlebt hat, gehoert erneuert. */ const tag = (iso: string) => new Date(`${iso}T00:00:00.000Z`) describe('Grenze', () => { it('liegt bei einem Jahr', () => { expect(WERT_VERALTET_TAGE).toBe(365) }) it('ist am 365. Tag noch nicht ueberschritten', () => { expect(wertVeraltet(365)).toBe(false) expect(wertVeraltet(366)).toBe(true) }) }) describe('Alter bestimmen', () => { it('rechnet in Kalendertagen', () => { const alter = wertalterBestimmen(tag('2026-01-01'), tag('2026-01-31')) expect(alter?.alterTage).toBe(30) expect(alter?.veraltet).toBe(false) expect(alter?.hinweis).toBeNull() }) it('meldet einen Wert von vor zwei Jahren als veraltet', () => { const alter = wertalterBestimmen(tag('2024-03-01'), tag('2026-03-01')) expect(alter?.veraltet).toBe(true) expect(alter?.hinweis).toBe('über ein Jahr alt') }) it('behauptet ohne Stichtag kein Alter', () => { // Kein Datum heisst nicht "heute" - es heisst "unbekannt". expect(wertalterBestimmen(null, tag('2026-03-01'))).toBeNull() }) it('zaehlt einen kuenftigen Stichtag negativ und nicht als veraltet', () => { // Kommt vor: Der Wert wird zum Quartalsende angefragt und vorab erfasst. const alter = wertalterBestimmen(tag('2026-06-30'), tag('2026-06-01')) expect(alter?.alterTage).toBe(-29) expect(alter?.veraltet).toBe(false) }) it('ist taggenau und nicht uhrzeitabhaengig', () => { const spaetAmTag = new Date('2026-03-01T23:30:00.000Z') expect(wertalterBestimmen(tag('2026-03-01'), spaetAmTag)?.alterTage).toBe(0) }) })