diff --git a/packages/@webex/plugin-cc/src/cc.ts b/packages/@webex/plugin-cc/src/cc.ts index 0185c5fae9f..aa37d5087dd 100644 --- a/packages/@webex/plugin-cc/src/cc.ts +++ b/packages/@webex/plugin-cc/src/cc.ts @@ -194,6 +194,7 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter await loginResponse; + this.services.webSocketManager.on('message', this.handleWebSocketMessage); this.incomingTaskListener(); this.taskManager.registerIncomingCallEvent(); @@ -294,7 +295,6 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter */ private setupEventListeners() { this.services.connectionService.on('connectionLost', this.handleConnectionLost.bind(this)); - this.services.webSocketManager.on('message', this.handleWebSocketMessage); } /** @@ -355,6 +355,7 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter await this.handleDeviceType(deviceType as LoginOption, dn); this.agentConfig.isAgentLoggedIn = true; + this.services.webSocketManager.on('message', this.handleWebSocketMessage); } catch (error) { const {reason, error: detailedError} = getErrorDetails(error, 'silentReLogin', CC_FILE); if (reason === 'AGENT_NOT_FOUND') { diff --git a/packages/@webex/plugin-cc/test/unit/spec/cc.ts b/packages/@webex/plugin-cc/test/unit/spec/cc.ts index f08eb9e7d44..94218d4e3e3 100644 --- a/packages/@webex/plugin-cc/test/unit/spec/cc.ts +++ b/packages/@webex/plugin-cc/test/unit/spec/cc.ts @@ -401,6 +401,7 @@ describe('webex.cc', () => { const onSpy = jest.spyOn(mockTaskManager, 'on'); const emitSpy = jest.spyOn(webex.cc, 'trigger'); + const ccEmitSpy = jest.spyOn(webex.cc, 'emit'); const incomingCallCb = onSpy.mock.calls[0][1]; expect(onSpy).toHaveBeenCalledWith(TASK_EVENTS.TASK_INCOMING, incomingCallCb); @@ -408,6 +409,20 @@ describe('webex.cc', () => { incomingCallCb(mockTask); expect(emitSpy).toHaveBeenCalledWith(TASK_EVENTS.TASK_INCOMING, mockTask); + // Verify message event listener + const messageCallback = mockWebSocketManager.on.mock.calls.find(call => call[0] === 'message')[1]; + const eventData = { + type: CC_EVENTS.AGENT_STATE_CHANGE, + data: { some: 'data' }, + }; + + // Simulate receiving a message event + messageCallback(JSON.stringify(eventData)); + + expect(ccEmitSpy).toHaveBeenCalledWith( + AGENT_STATE_CHANGE, + eventData.data + ); }); it('should login successfully with other LoginOption', async () => { @@ -854,29 +869,6 @@ describe('webex.cc', () => { 'connectionLost', expect.any(Function) ); - - expect(mockWebSocketManager.on).toHaveBeenCalledWith( - 'message', - expect.any(Function) - ); - }); - - it('should emit AGENT_STATE_CHANGE when message event is received', () => { - webex.cc.setupEventListeners(); - - const messageCallback = mockWebSocketManager.on.mock.calls[0][1]; - const eventData = { - type: CC_EVENTS.AGENT_STATE_CHANGE, - data: { some: 'data' }, - }; - - // Simulate receiving a message event - messageCallback(JSON.stringify(eventData)); - - expect(cCEmitSpy).toHaveBeenCalledWith( - AGENT_STATE_CHANGE, - eventData.data - ); }); }); });