feat: Add user statuses and cards
This commit is contained in:
55
toju-app/src/app/store/rooms/rooms-helpers-status.spec.ts
Normal file
55
toju-app/src/app/store/rooms/rooms-helpers-status.spec.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { buildSignalingUser } from './rooms.helpers';
|
||||
|
||||
describe('buildSignalingUser - status', () => {
|
||||
it('defaults to online when no status provided', () => {
|
||||
const user = buildSignalingUser({ oderId: 'u1', displayName: 'Alice' });
|
||||
|
||||
expect(user.status).toBe('online');
|
||||
});
|
||||
|
||||
it('uses away status when provided', () => {
|
||||
const user = buildSignalingUser({ oderId: 'u1', displayName: 'Alice', status: 'away' });
|
||||
|
||||
expect(user.status).toBe('away');
|
||||
});
|
||||
|
||||
it('uses busy status when provided', () => {
|
||||
const user = buildSignalingUser({ oderId: 'u1', displayName: 'Bob', status: 'busy' });
|
||||
|
||||
expect(user.status).toBe('busy');
|
||||
});
|
||||
|
||||
it('ignores invalid status and defaults to online', () => {
|
||||
const user = buildSignalingUser({ oderId: 'u1', displayName: 'Eve', status: 'invalid' });
|
||||
|
||||
expect(user.status).toBe('online');
|
||||
});
|
||||
|
||||
it('maps offline status to disconnected', () => {
|
||||
const user = buildSignalingUser({ oderId: 'u1', displayName: 'Ghost', status: 'offline' });
|
||||
|
||||
expect(user.status).toBe('disconnected');
|
||||
});
|
||||
|
||||
it('allows extras to override status', () => {
|
||||
const user = buildSignalingUser(
|
||||
{ oderId: 'u1', displayName: 'Dave', status: 'away' },
|
||||
{ status: 'busy' }
|
||||
);
|
||||
|
||||
expect(user.status).toBe('busy');
|
||||
});
|
||||
|
||||
it('preserves other fields', () => {
|
||||
const user = buildSignalingUser(
|
||||
{ oderId: 'u1', displayName: 'Alice', status: 'away' },
|
||||
{ presenceServerIds: ['server-1'] }
|
||||
);
|
||||
|
||||
expect(user.oderId).toBe('u1');
|
||||
expect(user.id).toBe('u1');
|
||||
expect(user.displayName).toBe('Alice');
|
||||
expect(user.isOnline).toBe(true);
|
||||
expect(user.role).toBe('member');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user