Exclude cancelled reservations before ARR field review

This commit is contained in:
Wyndham ARR committed 2026-10-08 20:19:27 +08:00
1 parent 36235e7d8d
commit 0c057a8e75
39 files changed
+1546 -56

No files matched your search

+25
View File
@@ -10,6 +10,31 @@ const item=(extra={})=>({item_id:'1:BLOCK_CODE',source_sequence:1,confirmation_n
const review=(items,revision=1)=>({request_id:requestId,report_date:task.report_date,status:'editing',revision,items,pending_count:items.filter(x=>!x.confirmed).length,total_count:items.length,can_finalize:items.every(x=>x.confirmed)});
const plain=value=>JSON.parse(JSON.stringify(value));
test('cancelled source rows need no fields and the exclusion stays visible before continuation',async()=>{
const h=harness(()=>response(200,{...review([]),excluded_cancelled_count:6}));
await h.acceptARRDownloadTask(task,{sync:false});
assert.equal(h.element('#arr-data-review-body').innerHTML,'');
assert.match(h.element('#arr-data-review-progress').textContent,/data_review\.excluded_cancelled/);
assert.equal(h.element('#arr-data-review-finalize').disabled,false);
assert.equal(h.calls.every(call=>call.method==='GET'),true);
});
test('removed cancelled items clear obsolete drafts but retain edits still in the review',async()=>{
let current=review([item(),item({item_id:'2:DISP_ROOM_NO',source_sequence:2,field:'DISP_ROOM_NO',can_be_empty:false})]);
const h=harness(()=>response(200,current));
await h.acceptARRDownloadTask(task,{sync:false});
h.state.arrDataReviewDrafts['1:BLOCK_CODE']='CANCELLED-DRAFT';
h.state.arrDataReviewDrafts['2:DISP_ROOM_NO']='ROOM-DRAFT';
current=review([current.items[1]],2);
await h.loadARRDataReview(requestId);
assert.equal(h.state.arrDataReviewDrafts['1:BLOCK_CODE'],undefined);
assert.equal(h.state.arrDataReviewDrafts['2:DISP_ROOM_NO'],'ROOM-DRAFT');
current={...review([],3),excluded_cancelled_count:2};
await h.loadARRDataReview(requestId);
assert.equal(Object.keys(h.state.arrDataReviewDrafts).length,0);
assert.equal(h.element('#arr-data-review-finalize').disabled,false);
});
for (const fixture of [
{name:'missing room retains the original required rule', field:'DISP_ROOM_NO', can_be_empty:false,
source_state:'missing', reason_code:'calendar_missing_rooms', expected:'room_missing_in_scope'},