fix: persist team changes only after versioned server confirmation

This commit is contained in:
2026-09-06 14:01:28 +03:00
parent 79654d66f7
commit 3d9aa79624
8 changed files with 80 additions and 20 deletions
+12
View File
@@ -217,3 +217,15 @@ test('profile and saved-filter writes require the loaded revision and reject con
assert.equal((await request('/api/me/data','PUT',{anahtar,deger,revision:null},other)).status,200);
}
});
test('team membership rejects stale and over-quota writes and permits removing last member',async()=>{
const anahtar='ekip',member={id:'qa-team',name:'QA ekip üyesi',role:'Uzman',email:''};
const initial=await request('/api/me/data');
const revision=initial.data.revisions.ekip ?? null;
assert.equal((await request('/api/me/data','PUT',{anahtar,deger:{},revision})).status,400);
const saved=await request('/api/me/data','PUT',{anahtar,deger:[member],revision});assert.equal(saved.status,200);
const stale=await request('/api/me/data','PUT',{anahtar,deger:[],revision});assert.equal(stale.status,409);
assert.equal((await request('/api/me/data','PUT',{anahtar,deger:[member,{...member,id:'qa-2'}],revision:saved.data.revision})).status,402);
assert.deepEqual((await request('/api/me/data')).data.veri.ekip,[member]);
assert.equal((await request('/api/me/data','PUT',{anahtar,deger:[],revision:saved.data.revision})).status,200);
assert.deepEqual((await request('/api/me/data')).data.veri.ekip,[]);
});
+8
View File
@@ -0,0 +1,8 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {validateTeam} from '../src/services/teamData.js';
test('team data accepts empty roster and rejects malformed or duplicate members',()=>{
const valid={id:'qa',name:'QA Uzman',role:'Uzman',email:'qa@example.test'};
assert.deepEqual(validateTeam([]),[]);assert.deepEqual(validateTeam([valid]),[valid]);
for(const bad of [{},null,[{}],[{...valid,name:' '}],[{...valid,email:'invalid'}],[{...valid,role:null}],[valid,valid]])assert.throws(()=>validateTeam(bad));
});