50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { describe, expect, test } from 'bun:test';
|
|
|
|
import { SfuSessionRegistry } from '../media/sfu/registry';
|
|
|
|
const buildSession = (streamSessionId: string) => ({
|
|
streamSessionId,
|
|
ownerUserId: 'user-1',
|
|
cameraDeviceId: 'camera-1',
|
|
requesterDeviceId: 'client-1',
|
|
state: 'starting' as const,
|
|
createdAt: '2026-04-16T12:00:00.000Z',
|
|
});
|
|
|
|
describe('SFU session registry', () => {
|
|
test('stores and retrieves a session descriptor without internal metadata', () => {
|
|
const registry = new SfuSessionRegistry();
|
|
registry.set(buildSession('stream-1'));
|
|
|
|
expect(registry.get('stream-1')).toEqual(buildSession('stream-1'));
|
|
});
|
|
|
|
test('returns null when updating a missing session state', () => {
|
|
const registry = new SfuSessionRegistry();
|
|
|
|
expect(registry.updateState('missing-stream', 'live')).toBeNull();
|
|
});
|
|
|
|
test('updates state and lists all registered sessions', () => {
|
|
const registry = new SfuSessionRegistry();
|
|
registry.set(buildSession('stream-1'));
|
|
registry.set({ ...buildSession('stream-2'), cameraDeviceId: 'camera-2' });
|
|
|
|
expect(registry.updateState('stream-1', 'live')).toEqual({
|
|
...buildSession('stream-1'),
|
|
state: 'live',
|
|
});
|
|
|
|
expect(registry.list()).toEqual([
|
|
{
|
|
...buildSession('stream-1'),
|
|
state: 'live',
|
|
},
|
|
{
|
|
...buildSession('stream-2'),
|
|
cameraDeviceId: 'camera-2',
|
|
},
|
|
]);
|
|
});
|
|
});
|