Analyze server-resolved document reviews with revision checks
This commit is contained in:
@@ -37,3 +37,10 @@ test('changed quantity, requirements and announcement invalidate reviewed source
|
||||
test('legacy positional prices are not silently assigned to potentially changed source rows',()=>{
|
||||
assert.deepEqual(restoreBidPrices({fiyatlar:{0:'15',1:'900'}}),{});
|
||||
});
|
||||
|
||||
test('review revision changes invalidate the preparation source even with identical extracted rows',()=>{
|
||||
const tender={ikn:'2026/1',items:[]};
|
||||
const first={sourceReview:{humanReview:{documentId:'doc',revision:1,textHash:'same'}}};
|
||||
const second={sourceReview:{humanReview:{documentId:'doc',revision:2,textHash:'same'}}};
|
||||
assert.notEqual(bidSourceSnapshot(tender,first),bidSourceSnapshot(tender,second));
|
||||
});
|
||||
|
||||
@@ -7,15 +7,24 @@ test('document review becomes stale when actual source bytes change; deletion re
|
||||
const dir=fs.mkdtempSync(path.join(tmpdir(),'ihale-review-'));
|
||||
process.env.IHALEIST_USER_DATA_DIR=dir;
|
||||
const store=await import('../server/user-store.mjs');
|
||||
const {documentReview,saveDocumentReview}=await import('../server/document-review.mjs');
|
||||
const {documentReview,saveDocumentReview,reviewedAnalysisSource}=await import('../server/document-review.mjs');
|
||||
try {
|
||||
const id=store.saveDocumentFile('owner',{ad:'qa.txt',tur:'ihale',ikn:'2026/1'},Buffer.from('Original source'));
|
||||
const source=documentReview('owner',id);
|
||||
const input={fileHash:source.fileHash,expectedRevision:0,correctedText:'A complete synthetic corrected document text for the test.',note:'All pages compared in this isolated synthetic test.',allPagesCompared:true};
|
||||
saveDocumentReview('owner',id,input);
|
||||
const resolved=reviewedAnalysisSource('owner',{documentId:id,revision:1},'2026/1');
|
||||
assert.equal(resolved.text,input.correctedText);
|
||||
assert.equal(resolved.humanReview.reviewedBy,'owner');
|
||||
assert.throws(()=>reviewedAnalysisSource('other',{documentId:id,revision:1},'2026/1'),e=>e.status===404);
|
||||
assert.throws(()=>reviewedAnalysisSource('owner',{documentId:id,revision:1},'2026/2'),e=>e.status===409);
|
||||
saveDocumentReview('owner',id,{...input,expectedRevision:1,correctedText:input.correctedText+' Revised.'});
|
||||
assert.throws(()=>reviewedAnalysisSource('owner',{documentId:id,revision:1},'2026/1'),e=>e.status===409);
|
||||
|
||||
const record=store.getDocument('owner',id);
|
||||
fs.writeFileSync(path.join(store.BELGE_DIR,record.dosya),'Changed source bytes');
|
||||
assert.equal(documentReview('owner',id).stale,true);
|
||||
assert.throws(()=>reviewedAnalysisSource('owner',{documentId:id,revision:2},'2026/1'),e=>e.status===409);
|
||||
assert.throws(()=>saveDocumentReview('owner',id,{...input,expectedRevision:1}),e=>e.status===409);
|
||||
store.deleteDocument('owner',id);
|
||||
const db=store.openDb();
|
||||
|
||||
Reference in New Issue
Block a user