import test from 'node:test';
import assert from 'node:assert/strict';
import {saveOnServer,reconcile} from '../build/react-model.mjs';
const metric=(r,key)=>r.metrics.find(([name])=>name===key)[1];

test('React rejects rollback, detects optimistic conflicts and invalidates summary',()=>{
 const original={id:'x',seats:2,name:'Workshop',version:1},wanted={...original,seats:6};
 const denied=saveOnServer(original,wanted,'rejected',true);assert.equal(denied.ok,false);assert.equal(reconcile(original,wanted,denied,true).editor.seats,2);
 assert.equal(reconcile(original,wanted,denied,false).editor.seats,6);
 assert.equal(saveOnServer({...original,version:2},wanted,'conflict',true).ok,false);
 const yes=saveOnServer(original,{...original,seats:3},'cache',true);assert.equal(reconcile(original,wanted,yes,true).summary.seats,3);
});