import type { User } from '../../shared-kernel'; import { buildUserIdentityLookup, findUserEntityByIdentity, resolveUserByIdentity } from './user-identity-lookup.rules'; function createUser(overrides: Partial = {}): User { return { id: 'server-user-1', oderId: 'server-user-1', username: 'alice', displayName: 'Alice', status: 'online', role: 'member', joinedAt: 1, presenceServerIds: ['room-1'], isOnline: true, ...overrides }; } describe('user-identity-lookup.rules', () => { it('indexes id, oderId, and peerId aliases in buildUserIdentityLookup', () => { const user = createUser({ id: 'server-user-1', oderId: 'oder-1', peerId: 'peer-1' }); const lookup = buildUserIdentityLookup([user]); expect(resolveUserByIdentity(lookup, 'server-user-1')).toBe(user); expect(resolveUserByIdentity(lookup, 'oder-1')).toBe(user); expect(resolveUserByIdentity(lookup, 'peer-1')).toBe(user); }); it('findUserEntityByIdentity resolves users keyed by a different entity id', () => { const user = createUser({ id: 'server-user-1', oderId: 'oder-1' }); const entities = { 'server-user-1': user }; expect(findUserEntityByIdentity(entities, 'oder-1')).toBe(user); expect(findUserEntityByIdentity(entities, 'home-user-1')).toBeUndefined(); }); });