This commit is contained in:
Mauve
2026-09-16 10:43:59 +08:00
parent a7f2e0ca01
commit 9f2becfa67
36 changed files with 3997 additions and 264 deletions
+28
View File
@@ -0,0 +1,28 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {readFile} from 'node:fs/promises';
const source=await readFile(new URL('../booking/bookingRecord/bookingRecord.vue',import.meta.url),'utf8');
function computed(name,next) {
const start=source.indexOf(name+'(){');
const end=source.indexOf(next+'()',start);
assert.ok(start>=0 && end>start);
return new Function(`return ({${source.slice(start,end).trim().replace(/,$/,'')}}).${name}();`)();
}
const color=computed('getRecordColor','getETA');
const confirmation=computed('getConfirmationNo','dateFormat');
test('AP retains approval color when lodging status also matches an ordinary booking',()=>{
for(const lastOperaStatus of ['CHECKED_IN','DUE_OUT','RESERVED',null]) {
for(const sharer of [null,'[]','']) {
assert.equal(color({approveStatus:'AP',lastOperaStatus,confirmationNo:'12345',sharer}),'hz-card-approval');
}
}
});
test('waitlist and ordinary colors are preserved',()=>{
for(const approveStatus of ['W','WA']) assert.equal(color({approveStatus,lastOperaStatus:'CHECKED_IN',confirmationNo:'12345'}),'hz-card-waitlist');
assert.equal(color({approveStatus:'N',lastOperaStatus:'CHECKED_IN',confirmationNo:'12345'}),'hz-card-booking');
});
test('Daylight still displays an existing AP confirmation number',()=>{
assert.equal(confirmation({approveStatus:'AP',confirmationNo:'12345'}),'12345');
assert.equal(confirmation({approveStatus:'AP',confirmationNo:null}),'N/A');
assert.equal(confirmation({approveStatus:'W',confirmationNo:'12345'}),'N/A');
});