diff --git a/src/collaboration/awareness.test.ts b/src/collaboration/awareness.test.ts index 4d41fbca..bbaa6e98 100644 --- a/src/collaboration/awareness.test.ts +++ b/src/collaboration/awareness.test.ts @@ -218,6 +218,14 @@ describe('collaboration awareness presentation', () => { expect(collaborationConnectionLabel(status)).toBe(label); }); + it('rejects a runtime connection status outside the public states', () => { + expect(() => collaborationConnectionLabel('failed' as never)).toThrowError( + new RangeError( + 'Collaboration connection status must be connecting, connected, disconnected, or offline.', + ), + ); + }); + it('renders a text-only high-contrast cursor for valid remote data', () => { const cursor = renderCollaborationCursor({ name: 'Remote Alice', diff --git a/src/collaboration/awareness.ts b/src/collaboration/awareness.ts index 6525b580..149b8028 100644 --- a/src/collaboration/awareness.ts +++ b/src/collaboration/awareness.ts @@ -215,6 +215,8 @@ export function collaborationConnectionLabel( status: CollaborationConnectionStatus | undefined, ): string { switch (status) { + case undefined: + return 'Collaboration ready'; case 'connecting': return 'Connecting'; case 'connected': @@ -224,7 +226,9 @@ export function collaborationConnectionLabel( case 'offline': return 'Offline'; default: - return 'Collaboration ready'; + throw new RangeError( + 'Collaboration connection status must be connecting, connected, disconnected, or offline.', + ); } }