diff --git a/app/javascript/dashboard/components-next/message/bubbles/VoiceCall.spec.js b/app/javascript/dashboard/components-next/message/bubbles/VoiceCall.spec.js new file mode 100644 index 000000000..453a0554b --- /dev/null +++ b/app/javascript/dashboard/components-next/message/bubbles/VoiceCall.spec.js @@ -0,0 +1,80 @@ +import { ref } from 'vue'; +import { mount } from '@vue/test-utils'; +import VoiceCallBubble from './VoiceCall.vue'; +import { MESSAGE_TYPES, VOICE_CALL_STATUS } from '../constants'; + +let messageContext; + +vi.mock('../provider.js', () => ({ + useMessageContext: () => messageContext, +})); + +vi.mock('vue-i18n', () => ({ + useI18n: () => ({ + t: (key, params = {}) => { + const translations = { + 'CONVERSATION.VOICE_CALL.CALL_IN_PROGRESS': 'Call in progress', + 'CONVERSATION.VOICE_CALL.AGENT_ANSWERED': `${params.agentName} answered`, + 'CONVERSATION.VOICE_CALL.YOU_ANSWERED': 'You answered', + 'CONVERSATION.VOICE_CALL.THEY_ANSWERED': 'They answered', + 'CONVERSATION.VOICE_CALL.NOT_ANSWERED_YET': 'Not answered yet', + 'CONVERSATION.VOICE_CALL.CALL_ENDED': 'Call ended', + 'CONVERSATION.VOICE_CALL.NO_ANSWER': 'No answer', + }; + + return translations[key] || key; + }, + }), +})); + +const mountComponent = () => + mount(VoiceCallBubble, { + global: { + stubs: { + BaseBubble: { + template: '