@webex/contact-center 3.12.0-task-refactor.4 → 3.12.0-task-refactor.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/services/task/TaskManager.js +1 -0
  2. package/dist/services/task/TaskManager.js.map +1 -1
  3. package/dist/services/task/TaskUtils.js +8 -6
  4. package/dist/services/task/TaskUtils.js.map +1 -1
  5. package/dist/services/task/state-machine/TaskStateMachine.js +77 -14
  6. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  7. package/dist/services/task/state-machine/actions.js +85 -13
  8. package/dist/services/task/state-machine/actions.js.map +1 -1
  9. package/dist/services/task/state-machine/guards.js +35 -0
  10. package/dist/services/task/state-machine/guards.js.map +1 -1
  11. package/dist/services/task/state-machine/uiControlsComputer.js +76 -10
  12. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  13. package/dist/services/task/voice/Voice.js +10 -4
  14. package/dist/services/task/voice/Voice.js.map +1 -1
  15. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +68 -8
  16. package/dist/types/services/task/state-machine/guards.d.ts +5 -0
  17. package/dist/types/services/task/voice/Voice.d.ts +18 -17
  18. package/dist/webex.js +1 -1
  19. package/package.json +1 -1
  20. package/src/services/task/TaskManager.ts +1 -1
  21. package/src/services/task/TaskUtils.ts +8 -6
  22. package/src/services/task/state-machine/TaskStateMachine.ts +101 -16
  23. package/src/services/task/state-machine/actions.ts +148 -24
  24. package/src/services/task/state-machine/guards.ts +46 -0
  25. package/src/services/task/state-machine/uiControlsComputer.ts +158 -15
  26. package/src/services/task/voice/Voice.ts +12 -5
  27. package/test/unit/spec/services/WebCallingService.ts +7 -1
  28. package/test/unit/spec/services/task/TaskManager.ts +26 -0
  29. package/test/unit/spec/services/task/TaskUtils.ts +16 -0
  30. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +573 -0
  31. package/test/unit/spec/services/task/state-machine/guards.ts +88 -0
  32. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +1023 -46
  33. package/test/unit/spec/services/task/voice/Voice.ts +44 -0
  34. package/umd/contact-center.min.js +2 -2
  35. package/umd/contact-center.min.js.map +1 -1
@@ -72,6 +72,30 @@ describe('Voice Task', () => {
72
72
  jest.clearAllMocks();
73
73
  });
74
74
 
75
+ describe('emitTaskOutdialFailed', () => {
76
+ it('emits the failure reason string instead of the Task object', () => {
77
+ const taskData = createBaseData({
78
+ interaction: {
79
+ outboundType: 'OUTDIAL',
80
+ } as any,
81
+ });
82
+ const voice = new Voice(dummyContact, taskData, {});
83
+ const emitSpy = jest.spyOn(voice, 'emit');
84
+
85
+ voice.sendStateMachineEvent({
86
+ type: TaskEvent.OUTBOUND_FAILED,
87
+ taskData,
88
+ reason: 'CUSTOMER_BUSY',
89
+ });
90
+
91
+ const outdialFailedCall = emitSpy.mock.calls.find(
92
+ (call) => call[0] === 'task:outdialFailed'
93
+ );
94
+ expect(outdialFailedCall).toBeDefined();
95
+ expect(outdialFailedCall![1]).toBe('CUSTOMER_BUSY');
96
+ });
97
+ });
98
+
75
99
  it('hides end and endConsult when disabled', () => {
76
100
  const voice = new Voice(dummyContact, createBaseData(), {
77
101
  isEndTaskEnabled: false,
@@ -122,6 +146,26 @@ describe('Voice Task', () => {
122
146
  });
123
147
  });
124
148
 
149
+ it('calls contact.unHold when state is conferencing and main media is held', async () => {
150
+ const heldConferenceData = createBaseData({
151
+ interaction: {
152
+ state: 'conference',
153
+ media: {media1: {mediaResourceId: 'media1', isHold: true}},
154
+ } as any,
155
+ }) as any;
156
+ const voice = new Voice(dummyContact, heldConferenceData, {});
157
+ primeConnectedState(voice, heldConferenceData);
158
+ voice.stateMachineService?.send({type: TaskEvent.CONFERENCE_START, taskData: heldConferenceData});
159
+ expect(voice.stateMachineService?.getSnapshot().value).toBe(TaskState.CONFERENCING);
160
+
161
+ await voice.holdResume();
162
+
163
+ expect(dummyContact.unHold).toHaveBeenCalledWith({
164
+ interactionId: 'int1',
165
+ data: {mediaResourceId: 'media1'},
166
+ });
167
+ });
168
+
125
169
  it('uses the main media resource when stale consult media is left in task data', async () => {
126
170
  const heldData = createBaseData({
127
171
  mediaResourceId: 'main-media',