Files
Agent-System/web/src/lib/adminUserDirectorySync.test.ts
T
weichenandCursor ec8a45a5fe fix(web): sync parent user directory after admin account changes
AdminSettingsModal previously left onRefreshUsers as a dead prop, so newly
created users never reached App allUsers/localStorage and Create Project
member candidates stayed stale (UI-01). Wire syncAdminUserDirectories,
surface refresh errors, and document the residual cross-device directory gap.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 11:58:06 +00:00

44 lines
1.2 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { syncAdminUserDirectories } from './adminUserDirectorySync';
test('syncAdminUserDirectories calls local reload then parent onRefreshUsers', async () => {
const order: string[] = [];
await syncAdminUserDirectories({
reloadLocalUsers: async () => {
order.push('local');
},
onRefreshUsers: async () => {
order.push('parent');
},
});
assert.deepEqual(order, ['local', 'parent']);
});
test('syncAdminUserDirectories fails closed when onRefreshUsers is a dead/missing prop', async () => {
let localCalled = false;
await assert.rejects(
async () =>
syncAdminUserDirectories({
reloadLocalUsers: async () => {
localCalled = true;
},
}),
/onRefreshUsers 未绑定/,
);
assert.equal(localCalled, true);
});
test('syncAdminUserDirectories surfaces parent refresh errors (no silent swallow)', async () => {
await assert.rejects(
async () =>
syncAdminUserDirectories({
reloadLocalUsers: async () => undefined,
onRefreshUsers: async () => {
throw new Error('getAdminUsers failed');
},
}),
/getAdminUsers failed/,
);
});