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.
28 lines
2.6 KiB
JavaScript
28 lines
2.6 KiB
JavaScript
import test from 'node:test';import assert from 'node:assert/strict';import {readFile} from 'node:fs/promises';
|
|
import {createIban,ibanError,bicError,compactIban,formatIban,changedBankError} from '../src/masterBank.mjs';
|
|
const examples=JSON.parse(await readFile(new URL('./fixtures/master-bank-php.json',import.meta.url),'utf8'));
|
|
test('IBAN calculation matches 52 independently executed current PHP-script cases across all 48 country formats',()=>{
|
|
assert.equal(examples.length,52);assert.equal(new Set(examples.map(e=>e.country)).size,48);
|
|
for(const e of examples){assert.equal(createIban(e.country,e.bank,e.account),e.iban,e.country);assert.equal(ibanError(e.iban),'',e.country);}
|
|
});
|
|
test('known IBAN keeps leading zeroes and grouping without numeric precision loss',()=>{
|
|
assert.equal(createIban('DE','37040044','532013000'),'DE89370400440532013000');assert.equal(formatIban('DE89370400440532013000'),'DE89 3704 0044 0532 0130 00');
|
|
assert.equal(ibanError('IBAN DE89 3704 0044 0532 0130 00'),'');assert.equal(ibanError('de89\t37040044 0532013000'),'');assert.equal(compactIban(null),'');
|
|
});
|
|
test('invalid bank/account lengths, alphabetic positions and unsupported countries never produce proposals',()=>{
|
|
for(const args of [['DE','123','1'],['DE','3704004A','1'],['DE','37040044',''],['DE','37040044','12345678901'],['DE','37040044','a'],['GB','1234123456','12345678'],['XX','12345678','1']])assert.throws(()=>createIban(...args));
|
|
});
|
|
test('checksum and structural faults are distinguished from blank optional bank fields',()=>{
|
|
assert.equal(ibanError(''),'');assert.equal(ibanError(null),'');
|
|
for(const invalid of ['DE88370400440532013000','DE8937040044053201300','DEAB370400440532013000','DE8937040_440532013000','XX89370400440532013000'])assert.notEqual(ibanError(invalid),'',invalid);
|
|
});
|
|
test('BIC supports eight or eleven letters/digits with alphabetic bank/country codes',()=>{
|
|
for(const ok of ['',null,'COBADEFF','cobadeffxxx','DABAIE2DXXX'])assert.equal(bicError(ok),'');
|
|
for(const bad of ['COBADE','COB1DEFF','COBA1EFF','COBADEFFXX','COBA DEFF','COBADEFF!XX'])assert.notEqual(bicError(bad),'');
|
|
});
|
|
test('legacy bank fields remain editable without forcing unrelated corrections; changed invalid values block saving',()=>{
|
|
const old={cmp_iban:'LEGACY',cmp_swift:'OLD',cmp_comp:'Vorher'};assert.equal(changedBankError({...old,cmp_comp:'Nachher'},old),'');
|
|
assert.notEqual(changedBankError({...old,cmp_iban:'BAD'},old),'');assert.notEqual(changedBankError({...old,cmp_swift:'BAD'},old),'');
|
|
assert.equal(changedBankError({...old,cmp_iban:'',cmp_swift:''},old),'');assert.notEqual(changedBankError(old,{}),'');
|
|
});
|