Files
votianng/frontend/test/customer-history.test.mjs
Sven 781a2b82dc Erweitere VoTiAn NG um Fachfunktionen und verbessere die Listenoberfläche
Ergänze Auftragsbearbeitung, Disposition, Stammdaten, Kunden- und
Transporteurportale, Lagerverwaltung, Abrechnung, Exporte und Statistik.
Füge Kontoeinstellungen, Mitteilungen, Automatikdienste und Betriebsstatus
sowie die zugehörigen Tests und PHP-Abgleichsdokumentation hinzu.

Vergrößere die persönlichen Auftragslisten auf einheitliche Höhen und
richte Statusanzeigen sowie die Ranking-Vorschau-Steuerelemente bündig aus.

Validierung: 44 Frontendtests und Produktionsbuild erfolgreich.
Backend funktional unverändert gegenüber dem vollständigen Lauf mit 1.624
erfolgreichen und drei übersprungenen Tests. Layout im Browser und lokale
Bereitstellung geprüft.
2026-10-20 11:19:43 +02:00

5 lines
1.0 KiB
JavaScript

import test from 'node:test';import assert from 'node:assert/strict';import {customerHistorySeries} from '../src/customerHistory.mjs';
test('empty and all-zero periods have finite chart coordinates',()=>{for(const rows of [[],[{month:'2026-01',amount:0,orders:0}]]){const s=customerHistorySeries(rows,'amount');assert.equal(s.zero,170);assert.ok(s.points.every(p=>Number.isFinite(p.x)&&Number.isFinite(p.y)));}});
test('credits plot below zero and amounts are not clamped',()=>{const s=customerHistorySeries([{month:'2025-12',amount:-50,orders:1},{month:'2026-01',amount:100,orders:2}],'amount');assert.deepEqual(s.points.map(p=>p.value),[-50,100]);assert.ok(s.points[0].y>s.zero&&s.points[1].y<s.zero);assert.deepEqual(s.points.map(p=>p.x),[40,700]);});
test('order counts use their own scale and invalid values are rejected',()=>{const s=customerHistorySeries([{month:'2026-01',amount:10000,orders:3}],'orders');assert.equal(s.max,3);assert.equal(s.points[0].y,25);assert.throws(()=>customerHistorySeries([{month:'x',amount:NaN,orders:1}],'amount'),/Monatswert/);});