import { describe, expect, it } from 'vitest'; import type { VoiceState } from '../../../../shared-kernel'; import { isLocalVoiceOwner, isVoiceOnAnotherClient, shouldTransmitVoice } from './client-voice-session.rules'; describe('client-voice-session.rules', () => { const localClientInstanceId = 'device-a'; it('treats the matching client instance as the local voice owner', () => { const voiceState: VoiceState = { isConnected: true, isMuted: false, isDeafened: false, isSpeaking: false, clientInstanceId: localClientInstanceId }; expect(isLocalVoiceOwner(voiceState, localClientInstanceId)).toBe(true); expect(isVoiceOnAnotherClient(voiceState, localClientInstanceId)).toBe(false); expect(shouldTransmitVoice(voiceState, localClientInstanceId)).toBe(true); }); it('treats a different client instance as passive voice', () => { const voiceState: VoiceState = { isConnected: true, isMuted: false, isDeafened: false, isSpeaking: false, clientInstanceId: 'device-b' }; expect(isLocalVoiceOwner(voiceState, localClientInstanceId)).toBe(false); expect(isVoiceOnAnotherClient(voiceState, localClientInstanceId)).toBe(true); expect(shouldTransmitVoice(voiceState, localClientInstanceId)).toBe(false); }); it('allows transmission when disconnected', () => { const voiceState: VoiceState = { isConnected: false, isMuted: false, isDeafened: false, isSpeaking: false }; expect(shouldTransmitVoice(voiceState, localClientInstanceId)).toBe(true); }); });