@wxcc-desktop/sdk 1.2.6 → 1.2.10

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 (67) hide show
  1. package/README.md +18 -391
  2. package/dist/index.js +1 -0
  3. package/dist/types/index.d.ts +21 -0
  4. package/dist/types/jsapi/actions-jsapi.d.ts +33 -0
  5. package/dist/types/jsapi/agent-contact-jsapi.d.ts +430 -0
  6. package/dist/types/jsapi/agent-state-info-jsapi.d.ts +88 -0
  7. package/dist/types/jsapi/common/_logger.d.ts +4 -0
  8. package/dist/types/jsapi/common/_service-checker.d.ts +12 -0
  9. package/dist/types/jsapi/common/_service-events.d.ts +31 -0
  10. package/dist/types/jsapi/config-jsapi.d.ts +26 -0
  11. package/dist/types/jsapi/dialer-jsapi.d.ts +73 -0
  12. package/dist/types/jsapi/i18n-jsapi.d.ts +23 -0
  13. package/dist/types/jsapi/logger-jsapi.d.ts +19 -0
  14. package/dist/types/jsapi/screenpop-jsapi.d.ts +29 -0
  15. package/dist/types/jsapi/shortcut-key-jsapi.d.ts +67 -0
  16. package/dist/types/sdk.d.ts +1 -0
  17. package/package.json +5 -60
  18. package/.eslintignore +0 -5
  19. package/.eslintrc.js +0 -22
  20. package/.prettierignore +0 -5
  21. package/.prettierrc +0 -5
  22. package/README_PUBLISH.md +0 -36
  23. package/jenkins-automation/MergePipeline.groovy +0 -143
  24. package/jest.config.js +0 -15
  25. package/sonar-project.properties +0 -17
  26. package/src/[sandbox]/README.md +0 -55
  27. package/src/[sandbox]/assets/i18n/de/app.json +0 -6
  28. package/src/[sandbox]/assets/i18n/en/app.json +0 -6
  29. package/src/[sandbox]/assets/i18n/widget-using-js-api/de/widget-using-js-api.json +0 -5
  30. package/src/[sandbox]/assets/i18n/widget-using-js-api/en/widget-using-js-api.json +0 -5
  31. package/src/[sandbox]/favicon.ico +0 -0
  32. package/src/[sandbox]/index.html +0 -9
  33. package/src/[sandbox]/sandbox-config.ts +0 -23
  34. package/src/[sandbox]/sandbox-mock.ts +0 -218
  35. package/src/[sandbox]/sandbox.ts +0 -164
  36. package/src/[sandbox]/widget-using-js-api.ts +0 -658
  37. package/src/global.d.ts +0 -5
  38. package/src/index.ts +0 -101
  39. package/src/jsapi/actions-jsapi.test.ts +0 -155
  40. package/src/jsapi/actions-jsapi.ts +0 -410
  41. package/src/jsapi/agent-contact-jsapi.test.ts +0 -217
  42. package/src/jsapi/agent-contact-jsapi.ts +0 -275
  43. package/src/jsapi/agent-state-info-jsapi.test.ts +0 -176
  44. package/src/jsapi/agent-state-info-jsapi.ts +0 -288
  45. package/src/jsapi/common/_logger.test.ts +0 -16
  46. package/src/jsapi/common/_logger.ts +0 -9
  47. package/src/jsapi/common/_service-checker.test.ts +0 -44
  48. package/src/jsapi/common/_service-checker.ts +0 -28
  49. package/src/jsapi/common/_service-events.test.ts +0 -122
  50. package/src/jsapi/common/_service-events.ts +0 -156
  51. package/src/jsapi/config-jsapi.test.ts +0 -78
  52. package/src/jsapi/config-jsapi.ts +0 -106
  53. package/src/jsapi/dialer-jsapi.test.ts +0 -101
  54. package/src/jsapi/dialer-jsapi.ts +0 -116
  55. package/src/jsapi/i18n-jsapi.test.ts +0 -62
  56. package/src/jsapi/i18n-jsapi.ts +0 -77
  57. package/src/jsapi/logger-jsapi.test.ts +0 -45
  58. package/src/jsapi/logger-jsapi.ts +0 -62
  59. package/src/jsapi/screenpop-jsapi.test.ts +0 -80
  60. package/src/jsapi/screenpop-jsapi.ts +0 -100
  61. package/src/jsapi/shortcut-key-jsapi.test.ts +0 -88
  62. package/src/jsapi/shortcut-key-jsapi.ts +0 -112
  63. package/src/sdk.ts +0 -3
  64. package/src/tsconfig.json +0 -18
  65. package/tsconfig.json +0 -13
  66. package/webpack.config.dev.server.ts +0 -12
  67. package/webpack.config.ts +0 -134
@@ -1,217 +0,0 @@
1
- import { AgentxServices, SERVICE } from "@wxcc-desktop/sdk-types";
2
- import { createAgentContactJsApi } from "./agent-contact-jsapi";
3
-
4
- jest.mock("@wxcc-desktop/sdk-types", () => {
5
- const agentx_services_mock = {
6
- SERVICE: {
7
- isInited: false,
8
- init: async (accessToken: string) => {
9
- agentx_services_mock.SERVICE.isInited = true;
10
- },
11
- aqm: ({
12
- contact: {
13
- accept: jest.fn().mockImplementation(async p => p),
14
- consultAccept: jest.fn().mockImplementation(async p => p),
15
- buddyAgents: jest.fn().mockImplementation(async p => p),
16
- end: jest.fn().mockImplementation(async p => p),
17
- consultEnd: jest.fn().mockImplementation(async p => p),
18
- cancelCtq: jest.fn().mockImplementation(async p => p),
19
- wrapup: jest.fn().mockImplementation(async p => p),
20
- vteamTransfer: jest.fn().mockImplementation(async p => p),
21
- blindTransfer: jest.fn().mockImplementation(async p => p),
22
- hold: jest.fn().mockImplementation(async p => p),
23
- unHold: jest.fn().mockImplementation(async p => p),
24
- consult: jest.fn().mockImplementation(async p => p),
25
- consultConference: jest.fn().mockImplementation(async p => p),
26
- decline: jest.fn().mockImplementation(async p => p),
27
- consultTransfer: jest.fn().mockImplementation(async p => p),
28
- vteamList: jest.fn().mockImplementation(async p => p),
29
- pauseRecording: jest.fn().mockImplementation(async p => p),
30
- resumeRecording: jest.fn().mockImplementation(async p => p),
31
- //
32
- eAgentContact: { listen: jest.fn(), listenOnce: jest.fn() }
33
- }
34
- } as unknown) as AgentxServices["aqm"]
35
- } as AgentxServices
36
- };
37
- return agentx_services_mock;
38
- });
39
-
40
- describe("Contact JSAPI", () => {
41
- let contact: ReturnType<typeof createAgentContactJsApi>;
42
-
43
- beforeEach(async () => {
44
- await (SERVICE as AgentxServices).init("fake-token");
45
-
46
- contact = createAgentContactJsApi();
47
-
48
- contact.init(SERVICE);
49
- });
50
-
51
- it("creates", () => {
52
- expect(contact).toBeDefined();
53
- expect(contact["logger"]).toBeDefined();
54
- expect(contact["serviceChecker"]).toBeDefined();
55
- expect(contact["aqmEvents"]).toBeDefined();
56
- });
57
-
58
- it("inits", () => {
59
- expect(contact["checkService"]()).toBeTruthy();
60
- expect(contact["aqmEvents"].isInited).toBeTruthy();
61
- });
62
-
63
- it("cleanups", () => {
64
- contact.cleanup();
65
-
66
- expect(contact["SERVICE"]).toBeUndefined();
67
- });
68
-
69
- it("checks service", () => {
70
- contact["serviceChecker"].check = jest.fn();
71
- contact["checkService"]();
72
-
73
- expect(contact["serviceChecker"].check).toHaveBeenCalled();
74
- });
75
-
76
- it("calls data", async () => {
77
- const r: any = { test: "TEST" };
78
-
79
- {
80
- const p = await contact.accept(r);
81
- expect(SERVICE.aqm.contact.accept).toHaveBeenCalledWith(r);
82
- expect(p).toEqual(r);
83
- }
84
-
85
- {
86
- const p = await contact.consultAccept(r);
87
- expect(SERVICE.aqm.contact.consultAccept).toHaveBeenCalledWith(r);
88
- expect(p).toEqual(r);
89
- }
90
-
91
- {
92
- const p = await contact.buddyAgents(r);
93
- expect(SERVICE.aqm.contact.buddyAgents).toHaveBeenCalledWith(r);
94
- expect(p).toEqual(r);
95
- }
96
-
97
- {
98
- const p = await contact.end(r);
99
- expect(SERVICE.aqm.contact.end).toHaveBeenCalledWith(r);
100
- expect(p).toEqual(r);
101
- }
102
-
103
- {
104
- const p = await contact.consultEnd(r);
105
- expect(SERVICE.aqm.contact.consultEnd).toHaveBeenCalledWith(r);
106
- expect(p).toEqual(r);
107
- }
108
-
109
- {
110
- const p = await contact.cancelCtq(r);
111
- expect(SERVICE.aqm.contact.cancelCtq).toHaveBeenCalledWith(r);
112
- expect(p).toEqual(r);
113
- }
114
-
115
- {
116
- const p = await contact.wrapup(r);
117
- expect(SERVICE.aqm.contact.wrapup).toHaveBeenCalledWith(r);
118
- expect(p).toEqual(r);
119
- }
120
-
121
- {
122
- const p = await contact.vteamTransfer(r);
123
- expect(SERVICE.aqm.contact.vteamTransfer).toHaveBeenCalledWith(r);
124
- expect(p).toEqual(r);
125
- }
126
-
127
- {
128
- const p = await contact.blindTransfer(r);
129
- expect(SERVICE.aqm.contact.blindTransfer).toHaveBeenCalledWith(r);
130
- expect(p).toEqual(r);
131
- }
132
-
133
- {
134
- const p = await contact.hold(r);
135
- expect(SERVICE.aqm.contact.hold).toHaveBeenCalledWith(r);
136
- expect(p).toEqual(r);
137
- }
138
-
139
- {
140
- const p = await contact.unHold(r);
141
- expect(SERVICE.aqm.contact.unHold).toHaveBeenCalledWith(r);
142
- expect(p).toEqual(r);
143
- }
144
-
145
- {
146
- const p = await contact.consult(r);
147
- expect(SERVICE.aqm.contact.consult).toHaveBeenCalledWith(r);
148
- expect(p).toEqual(r);
149
- }
150
-
151
- {
152
- const p = await contact.consultConference(r);
153
- expect(SERVICE.aqm.contact.consultConference).toHaveBeenCalledWith(r);
154
- expect(p).toEqual(r);
155
- }
156
-
157
- {
158
- const p = await contact.decline(r);
159
- expect(SERVICE.aqm.contact.decline).toHaveBeenCalledWith(r);
160
- expect(p).toEqual(r);
161
- }
162
-
163
- {
164
- const p = await contact.consultTransfer(r);
165
- expect(SERVICE.aqm.contact.consultTransfer).toHaveBeenCalledWith(r);
166
- expect(p).toEqual(r);
167
- }
168
-
169
- {
170
- const p = await contact.vteamList(r);
171
- expect(SERVICE.aqm.contact.vteamList).toHaveBeenCalledWith(r);
172
- expect(p).toEqual(r);
173
- }
174
-
175
- {
176
- const p = await contact.pauseRecording(r);
177
- expect(SERVICE.aqm.contact.pauseRecording).toHaveBeenCalledWith(r);
178
- expect(p).toEqual(r);
179
- }
180
-
181
- {
182
- const p = await contact.resumeRecording(r);
183
- expect(SERVICE.aqm.contact.resumeRecording).toHaveBeenCalledWith(r);
184
- expect(p).toEqual(r);
185
- }
186
- });
187
-
188
- it("listens", () => {
189
- const listener = () => {};
190
- contact.addEventListener("eAgentContact", listener);
191
- expect(contact["aqmEvents"]["listeners"].size).toBe(1);
192
- expect(SERVICE.aqm.contact.eAgentContact.listen).toHaveBeenCalledWith(listener);
193
- contact.removeEventListener("eAgentContact", listener);
194
- expect(contact["aqmEvents"]["listeners"].size).toBe(0);
195
- });
196
-
197
- it("listensOnce", () => {
198
- const listener = () => {};
199
- contact.addOnceEventListener("eAgentContact", listener);
200
- expect(contact["aqmEvents"]["listenersOnce"].size).toBe(1);
201
- expect(SERVICE.aqm.contact.eAgentContact.listenOnce).toHaveBeenCalledWith(listener);
202
- contact.removeOnceEventListener("eAgentContact", listener);
203
- expect(contact["aqmEvents"]["listenersOnce"].size).toBe(0);
204
- });
205
-
206
- it("removesAllListeners", () => {
207
- const listener1 = () => {};
208
- const listener2 = () => {};
209
- contact.addEventListener("eAgentContact", listener1);
210
- contact.addOnceEventListener("eAgentContact", listener2);
211
- expect(contact["aqmEvents"]["listeners"].size).toBe(1);
212
- expect(contact["aqmEvents"]["listenersOnce"].size).toBe(1);
213
- contact.removeAllEventListeners();
214
- expect(contact["aqmEvents"]["listeners"].size).toBe(0);
215
- expect(contact["aqmEvents"]["listenersOnce"].size).toBe(0);
216
- });
217
- });
@@ -1,275 +0,0 @@
1
- import { AgentxService, Service } from "@wxcc-desktop/sdk-types";
2
- import { logger } from "../sdk";
3
- import { createJsApiLogger } from "./common/_logger";
4
- import { createServiceChecker } from "./common/_service-checker";
5
- import { AqmServiceEntityEvents, createServiceEvents } from "./common/_service-events";
6
-
7
- type Listeners = {
8
- eAgentContact: Parameters<AgentxService["aqm"]["contact"]["eAgentContact"]["listen"]>[0];
9
- eAgentContactAssigned: Parameters<AgentxService["aqm"]["contact"]["eAgentContactAssigned"]["listen"]>[0];
10
- eAgentContactEnded: Parameters<AgentxService["aqm"]["contact"]["eAgentContactEnded"]["listen"]>[0];
11
- eAgentContactWrappedUp: Parameters<AgentxService["aqm"]["contact"]["eAgentContactWrappedUp"]["listen"]>[0];
12
- eAgentOfferContact: Parameters<AgentxService["aqm"]["contact"]["eAgentOfferContact"]["listen"]>[0];
13
- eAgentOfferContactRona: Parameters<AgentxService["aqm"]["contact"]["eAgentOfferContactRona"]["listen"]>[0];
14
- eAgentOfferConsult: Parameters<AgentxService["aqm"]["contact"]["eAgentOfferConsult"]["listen"]>[0];
15
- eAgentWrapup: Parameters<AgentxService["aqm"]["contact"]["eAgentWrapup"]["listen"]>[0];
16
- eAgentContactHeld: Parameters<AgentxService["aqm"]["contact"]["eAgentContactHeld"]["listen"]>[0];
17
- eAgentContactUnHeld: Parameters<AgentxService["aqm"]["contact"]["eAgentContactUnHeld"]["listen"]>[0];
18
- eCallRecordingStarted: Parameters<AgentxService["aqm"]["contact"]["eCallRecordingStarted"]["listen"]>[0];
19
- eAgentConsultCreated: Parameters<AgentxService["aqm"]["contact"]["eAgentConsultCreated"]["listen"]>[0];
20
- eAgentConsultConferenced: Parameters<AgentxService["aqm"]["contact"]["eAgentConsultConferenced"]["listen"]>[0];
21
- eAgentConsultEnded: Parameters<AgentxService["aqm"]["contact"]["eAgentConsultEnded"]["listen"]>[0];
22
- eAgentCtqCancelled: Parameters<AgentxService["aqm"]["contact"]["eAgentCtqCancelled"]["listen"]>[0];
23
- eAgentConsulting: Parameters<AgentxService["aqm"]["contact"]["eAgentConsulting"]["listen"]>[0];
24
- eAgentConsultFailed: Parameters<AgentxService["aqm"]["contact"]["eAgentConsultFailed"]["listen"]>[0];
25
- eAgentConsultEndFailed: Parameters<AgentxService["aqm"]["contact"]["eAgentConsultEndFailed"]["listen"]>[0];
26
- eAgentCtqFailed: Parameters<AgentxService["aqm"]["contact"]["eAgentCtqFailed"]["listen"]>[0];
27
- eAgentCtqCancelFailed: Parameters<AgentxService["aqm"]["contact"]["eAgentCtqCancelFailed"]["listen"]>[0];
28
- eAgentConsultConferenceEndFailed: Parameters<
29
- AgentxService["aqm"]["contact"]["eAgentConsultConferenceEndFailed"]["listen"]
30
- >[0];
31
- };
32
-
33
- type AqmContactEvents = AqmServiceEntityEvents<Listeners>;
34
-
35
- type Config = {
36
- logger: ReturnType<typeof createJsApiLogger>;
37
- serviceChecker: ReturnType<typeof createServiceChecker>;
38
- aqmEvents: AqmContactEvents;
39
- };
40
-
41
- export class AgentContactJsApi {
42
- private readonly logger: Config["logger"];
43
- private readonly serviceChecker: Config["serviceChecker"];
44
- private readonly aqmEvents: Config["aqmEvents"];
45
-
46
- private SERVICE?: AgentxService;
47
-
48
- private checkService() {
49
- return this.serviceChecker.check(this.SERVICE);
50
- }
51
-
52
- constructor(config: Config) {
53
- this.logger = config.logger;
54
- this.aqmEvents = config.aqmEvents;
55
- this.serviceChecker = config.serviceChecker;
56
- }
57
-
58
- //
59
- init(SERVICE?: AgentxService) {
60
- if (SERVICE) {
61
- this.SERVICE = SERVICE;
62
- }
63
-
64
- if (!this.checkService()) {
65
- return;
66
- }
67
-
68
- this.aqmEvents.init({
69
- aqmServiceEntity: this.SERVICE!.aqm.contact,
70
- aqmServiceEntityString: "SERVICE.aqm.contact"
71
- });
72
-
73
- this.logger.info("Inited");
74
- }
75
-
76
- cleanup() {
77
- this.aqmEvents.cleanup();
78
-
79
- this.SERVICE = undefined;
80
-
81
- this.logger.info("Cleaned");
82
- }
83
-
84
- // data calls
85
- async accept(p: { interactionId: string }) {
86
- if (!this.checkService()) {
87
- return;
88
- }
89
- return this.SERVICE?.aqm.contact.accept(p);
90
- }
91
-
92
- async consultAccept(p: { interactionId: string }) {
93
- if (!this.checkService()) {
94
- return;
95
- }
96
- return this.SERVICE?.aqm.contact.consultAccept(p);
97
- }
98
-
99
- async buddyAgents(p: { data: Service.Aqm.Contact.BuddyAgents }) {
100
- if (!this.checkService()) {
101
- return;
102
- }
103
- return this.SERVICE?.aqm.contact.buddyAgents(p);
104
- }
105
-
106
- async end(p: { interactionId: string }) {
107
- if (!this.checkService()) {
108
- return;
109
- }
110
- return this.SERVICE?.aqm.contact.end(p);
111
- }
112
-
113
- async consultEnd(p: { interactionId: string; isConsult: boolean }) {
114
- if (!this.checkService()) {
115
- return;
116
- }
117
- return this.SERVICE?.aqm.contact.consultEnd(p);
118
- }
119
-
120
- async cancelCtq(p: { interactionId: string; data: Service.Aqm.Contact.cancelCtq }) {
121
- if (!this.checkService()) {
122
- return;
123
- }
124
- return this.SERVICE?.aqm.contact.cancelCtq(p);
125
- }
126
-
127
- async wrapup(p: { interactionId: string; data: Service.Aqm.Contact.WrapupPayLoad }) {
128
- if (!this.checkService()) {
129
- return;
130
- }
131
- return this.SERVICE?.aqm.contact.wrapup(p);
132
- }
133
-
134
- async vteamTransfer(p: { interactionId: string; data: Service.Aqm.Contact.vteamTransferPayLoad }) {
135
- if (!this.checkService()) {
136
- return;
137
- }
138
- return this.SERVICE?.aqm.contact.vteamTransfer(p);
139
- }
140
-
141
- async blindTransfer(p: { interactionId: string; data: Service.Aqm.Contact.blindTransferPayLoad }) {
142
- if (!this.checkService()) {
143
- return;
144
- }
145
- return this.SERVICE?.aqm.contact.blindTransfer(p);
146
- }
147
-
148
- async hold(p: {
149
- interactionId: string;
150
- data: {
151
- mediaResourceId: string;
152
- };
153
- }) {
154
- if (!this.checkService()) {
155
- return;
156
- }
157
- return this.SERVICE?.aqm.contact.hold(p);
158
- }
159
-
160
- async unHold(p: {
161
- interactionId: string;
162
- data: {
163
- mediaResourceId: string;
164
- };
165
- }) {
166
- if (!this.checkService()) {
167
- return;
168
- }
169
- return this.SERVICE?.aqm.contact.unHold(p);
170
- }
171
-
172
- async consult(p: {
173
- interactionId: string;
174
- data:
175
- | Service.Aqm.Contact.ConsultPayload
176
- | Service.Aqm.Contact.ConsultDN
177
- | Service.Aqm.Contact.ConsultAgent
178
- | Service.Aqm.Contact.ConsultQueue;
179
- url: string;
180
- }) {
181
- if (!this.checkService()) {
182
- return;
183
- }
184
- return this.SERVICE?.aqm.contact.consult(p);
185
- }
186
-
187
- async consultConference(p: { interactionId: string; data: Service.Aqm.Contact.ConsultPayload }) {
188
- if (!this.checkService()) {
189
- return;
190
- }
191
- return this.SERVICE?.aqm.contact.consultConference(p);
192
- }
193
-
194
- async decline(p: {
195
- interactionId: string;
196
- data: {
197
- mediaResourceId: string;
198
- };
199
- isConsult: boolean;
200
- }) {
201
- if (!this.checkService()) {
202
- return;
203
- }
204
- return this.SERVICE?.aqm.contact.decline(p);
205
- }
206
-
207
- async consultTransfer(p: { interactionId: string; data: Service.Aqm.Contact.consultTransferPayLoad }) {
208
- if (!this.checkService()) {
209
- return;
210
- }
211
- return this.SERVICE?.aqm.contact.consultTransfer(p);
212
- }
213
-
214
- async vteamList(p: { data: Service.Aqm.Contact.VTeam }) {
215
- if (!this.checkService()) {
216
- return;
217
- }
218
- return this.SERVICE?.aqm.contact.vteamList(p);
219
- }
220
-
221
- async pauseRecording(p: { interactionId: string }) {
222
- if (!this.checkService()) {
223
- return;
224
- }
225
- return this.SERVICE?.aqm.contact.pauseRecording(p);
226
- }
227
-
228
- async resumeRecording(p: { interactionId: string; data: { autoResumed: boolean } }) {
229
- if (!this.checkService()) {
230
- return;
231
- }
232
- return this.SERVICE?.aqm.contact.resumeRecording(p);
233
- }
234
-
235
- // data events
236
- addEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
237
- if (!this.checkService()) {
238
- return;
239
- }
240
- this.aqmEvents.addEventListener(eventName, listener);
241
- }
242
-
243
- addOnceEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
244
- if (!this.checkService()) {
245
- return;
246
- }
247
- this.aqmEvents.addOnceEventListener(eventName, listener);
248
- }
249
-
250
- removeEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
251
- this.aqmEvents.removeEventListener(eventName, listener);
252
- }
253
-
254
- removeOnceEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
255
- this.aqmEvents.removeOnceEventListener(eventName, listener);
256
- }
257
-
258
- removeAllEventListeners() {
259
- this.aqmEvents.removeAllEventListeners();
260
- }
261
- }
262
-
263
- const agentContactJsApiLogger = createJsApiLogger(logger, "[AgentContact JSAPI] =>");
264
- const aqmServiceAgentContactJsApiLogger = createJsApiLogger(agentContactJsApiLogger, "[AqmServiceEvents: Contact] => ");
265
-
266
- // Standalone init
267
- export const createAgentContactJsApi = () =>
268
- new AgentContactJsApi({
269
- // LOGGER
270
- logger: agentContactJsApiLogger,
271
- // CHECK
272
- serviceChecker: createServiceChecker({ logger: agentContactJsApiLogger }),
273
- // EVENTS
274
- aqmEvents: createServiceEvents<Listeners>({ logger: aqmServiceAgentContactJsApiLogger })
275
- });
@@ -1,176 +0,0 @@
1
- import { AgentxServices, SERVICE } from "@wxcc-desktop/sdk-types";
2
- import { AgentStateInfoJsapi, createAgentStateInfoJsApi } from "./agent-state-info-jsapi";
3
-
4
- jest.mock("@wxcc-desktop/sdk-types", () => {
5
- const agentx_services_mock = {
6
- SERVICE: {
7
- isInited: false,
8
- init: async (accessToken: string) => {
9
- agentx_services_mock.SERVICE.isInited = true;
10
- },
11
- conf: ({
12
- fetchProfile: jest.fn()
13
- } as unknown) as AgentxServices["conf"],
14
- aqm: ({
15
- agent: {
16
- updated: jest.fn(),
17
- stateChange: jest.fn(),
18
- mockOutdialAniList: jest.fn(),
19
- fetchAddressBooks: jest.fn(),
20
- //
21
- eAgentReloginSuccess: {
22
- listen: jest.fn(),
23
- listenOnce: jest.fn()
24
- },
25
- eAgentStationLoginSuccess: {
26
- listen: jest.fn(),
27
- listenOnce: jest.fn()
28
- },
29
- eAgentStateChangeSuccess: {
30
- listen: jest.fn(),
31
- listenOnce: jest.fn()
32
- },
33
- eAgentDNRegistered: {
34
- listen: jest.fn(),
35
- listenOnce: jest.fn()
36
- }
37
- }
38
- } as unknown) as AgentxServices["aqm"]
39
- } as AgentxServices
40
- };
41
- return agentx_services_mock;
42
- });
43
-
44
- describe("StateInfo JSAPI", () => {
45
- let stateInfo: ReturnType<typeof createAgentStateInfoJsApi>;
46
-
47
- beforeEach(async () => {
48
- await (SERVICE as AgentxServices).init("fake-token");
49
-
50
- stateInfo = createAgentStateInfoJsApi();
51
-
52
- await stateInfo.init(SERVICE);
53
- });
54
-
55
- it("creates", () => {
56
- expect(stateInfo).toBeDefined();
57
- expect(stateInfo["logger"]).toBeDefined();
58
- expect(stateInfo["serviceChecker"]).toBeDefined();
59
- });
60
-
61
- it("inits", () => {
62
- expect(stateInfo["checkService"]()).toBeTruthy();
63
- expect(stateInfo["listeners"].size).toBe(4);
64
- expect(SERVICE.aqm.agent.eAgentReloginSuccess.listen).toHaveBeenCalled();
65
- expect(SERVICE.aqm.agent.eAgentStationLoginSuccess.listen).toHaveBeenCalled();
66
- expect(SERVICE.aqm.agent.eAgentStateChangeSuccess.listen).toHaveBeenCalled();
67
- expect(SERVICE.aqm.agent.eAgentDNRegistered.listen).toHaveBeenCalled();
68
- expect(SERVICE.conf.fetchProfile).toHaveBeenCalled();
69
- });
70
-
71
- it("cleanups", () => {
72
- stateInfo["update"] = jest.fn();
73
- stateInfo["unsubscribeSelfDataEvents"] = jest.fn();
74
- stateInfo["removeAllEventListeners"] = jest.fn();
75
-
76
- stateInfo.cleanup();
77
-
78
- expect(stateInfo["SERVICE"]).toBeUndefined();
79
-
80
- expect(stateInfo["update"]).toHaveBeenCalled();
81
- expect(stateInfo["unsubscribeSelfDataEvents"]).toHaveBeenCalled();
82
- expect(stateInfo["removeAllEventListeners"]).toHaveBeenCalled();
83
- });
84
-
85
- it("checks service", () => {
86
- stateInfo["serviceChecker"].check = jest.fn();
87
- stateInfo["checkService"]();
88
-
89
- expect(stateInfo["serviceChecker"].check).toHaveBeenCalled();
90
- });
91
-
92
- it("calls data", () => {
93
- stateInfo.stateChange({ test: "A" } as any);
94
- expect(SERVICE.aqm.agent.stateChange).toHaveBeenCalledWith({ data: { test: "A" } });
95
-
96
- stateInfo.mockOutdialAniList();
97
- expect(SERVICE.aqm.agent.mockOutdialAniList).toHaveBeenCalled();
98
-
99
- stateInfo.fetchAddressBooks();
100
- expect(SERVICE.aqm.agent.fetchAddressBooks).toHaveBeenCalled();
101
- });
102
-
103
- it("listens", () => {
104
- stateInfo["emitter"].on = jest.fn();
105
- stateInfo["emitter"].off = jest.fn();
106
-
107
- const listener = () => {};
108
-
109
- stateInfo.addEventListener("updated", listener);
110
- expect(stateInfo["emitter"].on).toHaveBeenCalledWith("updated", listener);
111
-
112
- stateInfo.removeEventListener("updated", listener);
113
- expect(stateInfo["emitter"].off).toHaveBeenCalledWith("updated", listener);
114
- });
115
-
116
- it("updates", () => {
117
- stateInfo["emit"] = jest.fn();
118
-
119
- stateInfo["update"]({ status: "test" });
120
-
121
- expect(stateInfo["emit"]).toHaveBeenCalledWith("updated", [
122
- {
123
- name: "status",
124
- oldValue: undefined,
125
- value: "test"
126
- }
127
- ]);
128
- });
129
-
130
- it("emits", () => {
131
- stateInfo["emitter"].emit = jest.fn();
132
-
133
- stateInfo["emit"]("updated", { test: "A" } as any);
134
-
135
- expect(stateInfo["emitter"].emit).toHaveBeenCalledWith("updated", { test: "A" });
136
- });
137
-
138
- it("finds outdial regexp", () => {
139
- expect(
140
- AgentStateInfoJsapi["getOutdialRegex"]({
141
- type: "adhocDial",
142
- dialPlanEntity: [{ regex: "test", prefix: "pfx", strippedChars: "st", name: "Any Format" }]
143
- })
144
- ).toBe("test");
145
-
146
- expect(
147
- AgentStateInfoJsapi["getOutdialRegex"]({
148
- type: "adhocDial",
149
- dialPlanEntity: [{ regex: "test", prefix: "pfx", strippedChars: "st", name: "" }]
150
- })
151
- ).toBe("");
152
- });
153
-
154
- it("fetches latest data", () => {
155
- stateInfo["fetchLatestData"]();
156
- expect(SERVICE.conf.fetchProfile).toHaveBeenCalled();
157
- });
158
-
159
- it("subscribes", () => {
160
- //stateInfo["checkService"] = jest.fn().mockImplementation(() => true);
161
-
162
- expect(stateInfo["listeners"].size).toBe(4);
163
-
164
- stateInfo["subscribeSelfDataEvents"]();
165
-
166
- expect(stateInfo["listeners"].size).toBe(8);
167
- });
168
-
169
- it("unsubscribes", () => {
170
- expect(stateInfo["listeners"].size).toBe(4);
171
-
172
- stateInfo["unsubscribeSelfDataEvents"]();
173
-
174
- expect(stateInfo["listeners"].size).toBe(0);
175
- });
176
- });