@thoughtspot/ts-chart-sdk 0.0.1-alpha.9 → 0.0.2-alpha.1

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 (126) hide show
  1. package/lib/main/custom-chart-context.d.ts +8 -1
  2. package/lib/main/custom-chart-context.d.ts.map +1 -1
  3. package/lib/main/custom-chart-context.js +29 -32
  4. package/lib/main/custom-chart-context.js.map +1 -1
  5. package/lib/main/custom-chart-context.spec.js +107 -260
  6. package/lib/main/custom-chart-context.spec.js.map +1 -1
  7. package/lib/main/post-message-event-bridge.d.ts +3 -3
  8. package/lib/main/post-message-event-bridge.d.ts.map +1 -1
  9. package/lib/main/post-message-event-bridge.js +24 -36
  10. package/lib/main/post-message-event-bridge.js.map +1 -1
  11. package/lib/main/post-message-event-bridge.spec.js +0 -2
  12. package/lib/main/post-message-event-bridge.spec.js.map +1 -1
  13. package/lib/main/util.d.ts +2 -0
  14. package/lib/main/util.d.ts.map +1 -0
  15. package/lib/main/util.js +9 -0
  16. package/lib/main/util.js.map +1 -0
  17. package/lib/react/use-custom-chart-context.spec.js +74 -119
  18. package/lib/react/use-custom-chart-context.spec.js.map +1 -1
  19. package/lib/types/common.types.d.ts +1 -0
  20. package/lib/types/common.types.d.ts.map +1 -1
  21. package/lib/types/ts-to-chart-event.types.d.ts +3 -0
  22. package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
  23. package/lib/types/ts-to-chart-event.types.js.map +1 -1
  24. package/package.json +5 -4
  25. package/src/main/custom-chart-context.spec.ts +116 -269
  26. package/src/main/custom-chart-context.ts +49 -38
  27. package/src/main/post-message-event-bridge.spec.ts +0 -3
  28. package/src/main/post-message-event-bridge.ts +36 -62
  29. package/src/main/util.ts +11 -0
  30. package/src/react/use-custom-chart-context.spec.tsx +84 -120
  31. package/src/types/common.types.ts +1 -1
  32. package/src/types/ts-to-chart-event.types.ts +14 -0
  33. package/cjs/index.d.ts +0 -9
  34. package/cjs/index.d.ts.map +0 -1
  35. package/cjs/index.js +0 -25
  36. package/cjs/index.js.map +0 -1
  37. package/cjs/main/custom-chart-context.d.ts +0 -47
  38. package/cjs/main/custom-chart-context.d.ts.map +0 -1
  39. package/cjs/main/custom-chart-context.js +0 -326
  40. package/cjs/main/custom-chart-context.js.map +0 -1
  41. package/cjs/main/custom-chart-context.spec.d.ts +0 -2
  42. package/cjs/main/custom-chart-context.spec.d.ts.map +0 -1
  43. package/cjs/main/custom-chart-context.spec.js +0 -699
  44. package/cjs/main/custom-chart-context.spec.js.map +0 -1
  45. package/cjs/main/post-message-event-bridge.d.ts +0 -6
  46. package/cjs/main/post-message-event-bridge.d.ts.map +0 -1
  47. package/cjs/main/post-message-event-bridge.js +0 -46
  48. package/cjs/main/post-message-event-bridge.js.map +0 -1
  49. package/cjs/main/post-message-event-bridge.spec.d.ts +0 -2
  50. package/cjs/main/post-message-event-bridge.spec.d.ts.map +0 -1
  51. package/cjs/main/post-message-event-bridge.spec.js +0 -124
  52. package/cjs/main/post-message-event-bridge.spec.js.map +0 -1
  53. package/cjs/react/custom-chart-context-service.d.ts +0 -33
  54. package/cjs/react/custom-chart-context-service.d.ts.map +0 -1
  55. package/cjs/react/custom-chart-context-service.js +0 -118
  56. package/cjs/react/custom-chart-context-service.js.map +0 -1
  57. package/cjs/react/custom-chart.context.d.ts +0 -26
  58. package/cjs/react/custom-chart.context.d.ts.map +0 -1
  59. package/cjs/react/custom-chart.context.js +0 -105
  60. package/cjs/react/custom-chart.context.js.map +0 -1
  61. package/cjs/react/custom-chart.spec.d.ts +0 -2
  62. package/cjs/react/custom-chart.spec.d.ts.map +0 -1
  63. package/cjs/react/custom-chart.spec.js +0 -72
  64. package/cjs/react/custom-chart.spec.js.map +0 -1
  65. package/cjs/react/mocks/custom-chart-context-mock.d.ts +0 -3
  66. package/cjs/react/mocks/custom-chart-context-mock.d.ts.map +0 -1
  67. package/cjs/react/mocks/custom-chart-context-mock.js +0 -100
  68. package/cjs/react/mocks/custom-chart-context-mock.js.map +0 -1
  69. package/cjs/react/use-custom-chart-context.d.ts +0 -4
  70. package/cjs/react/use-custom-chart-context.d.ts.map +0 -1
  71. package/cjs/react/use-custom-chart-context.js +0 -95
  72. package/cjs/react/use-custom-chart-context.js.map +0 -1
  73. package/cjs/react/use-custom-chart-context.spec.d.ts +0 -2
  74. package/cjs/react/use-custom-chart-context.spec.d.ts.map +0 -1
  75. package/cjs/react/use-custom-chart-context.spec.js +0 -391
  76. package/cjs/react/use-custom-chart-context.spec.js.map +0 -1
  77. package/cjs/react/use-custom-chart-context.util.d.ts +0 -6
  78. package/cjs/react/use-custom-chart-context.util.d.ts.map +0 -1
  79. package/cjs/react/use-custom-chart-context.util.js +0 -60
  80. package/cjs/react/use-custom-chart-context.util.js.map +0 -1
  81. package/cjs/react/use-custom-chart-types.d.ts +0 -23
  82. package/cjs/react/use-custom-chart-types.d.ts.map +0 -1
  83. package/cjs/react/use-custom-chart-types.js +0 -3
  84. package/cjs/react/use-custom-chart-types.js.map +0 -1
  85. package/cjs/test/test-utils.d.ts +0 -7
  86. package/cjs/test/test-utils.d.ts.map +0 -1
  87. package/cjs/test/test-utils.js +0 -14
  88. package/cjs/test/test-utils.js.map +0 -1
  89. package/cjs/types/answer-column.types.d.ts +0 -69
  90. package/cjs/types/answer-column.types.d.ts.map +0 -1
  91. package/cjs/types/answer-column.types.js +0 -59
  92. package/cjs/types/answer-column.types.js.map +0 -1
  93. package/cjs/types/chart-to-ts-event.types.d.ts +0 -98
  94. package/cjs/types/chart-to-ts-event.types.d.ts.map +0 -1
  95. package/cjs/types/chart-to-ts-event.types.js +0 -32
  96. package/cjs/types/chart-to-ts-event.types.js.map +0 -1
  97. package/cjs/types/common.types.d.ts +0 -51
  98. package/cjs/types/common.types.d.ts.map +0 -1
  99. package/cjs/types/common.types.js +0 -3
  100. package/cjs/types/common.types.js.map +0 -1
  101. package/cjs/types/configurator.types.d.ts +0 -15
  102. package/cjs/types/configurator.types.d.ts.map +0 -1
  103. package/cjs/types/configurator.types.js +0 -3
  104. package/cjs/types/configurator.types.js.map +0 -1
  105. package/cjs/types/ts-to-chart-event.types.d.ts +0 -91
  106. package/cjs/types/ts-to-chart-event.types.d.ts.map +0 -1
  107. package/cjs/types/ts-to-chart-event.types.js +0 -18
  108. package/cjs/types/ts-to-chart-event.types.js.map +0 -1
  109. package/cjs/types/visual-prop.types.d.ts +0 -73
  110. package/cjs/types/visual-prop.types.d.ts.map +0 -1
  111. package/cjs/types/visual-prop.types.js +0 -3
  112. package/cjs/types/visual-prop.types.js.map +0 -1
  113. package/dist/ts-chart-sdk.d.ts +0 -312
  114. package/lib/dist/ts-chart-sdk.d.ts +0 -312
  115. package/lib/react/custom-chart-context-service.d.ts +0 -33
  116. package/lib/react/custom-chart-context-service.d.ts.map +0 -1
  117. package/lib/react/custom-chart-context-service.js +0 -91
  118. package/lib/react/custom-chart-context-service.js.map +0 -1
  119. package/lib/react/custom-chart.context.d.ts +0 -26
  120. package/lib/react/custom-chart.context.d.ts.map +0 -1
  121. package/lib/react/custom-chart.context.js +0 -78
  122. package/lib/react/custom-chart.context.js.map +0 -1
  123. package/lib/react/custom-chart.spec.d.ts +0 -2
  124. package/lib/react/custom-chart.spec.d.ts.map +0 -1
  125. package/lib/react/custom-chart.spec.js +0 -67
  126. package/lib/react/custom-chart.spec.js.map +0 -1
package/package.json CHANGED
@@ -1,19 +1,18 @@
1
1
  {
2
2
  "name": "@thoughtspot/ts-chart-sdk",
3
3
  "private": false,
4
- "version": "0.0.1-alpha.9",
4
+ "version": "0.0.2-alpha.1",
5
5
  "module": "lib/index",
6
6
  "main": "lib/index",
7
7
  "types": "lib/index",
8
8
  "files": [
9
- "cjs/**",
10
9
  "dist/**",
11
10
  "lib/**",
12
11
  "src/**"
13
12
  ],
14
13
  "scripts": {
15
- "build": "tsc -p .; tsc -p . --module commonjs --outDir cjs",
16
- "tsc": "tsc -p .; tsc -p . --module commonjs --outDir cjs",
14
+ "build": "tsc -p .",
15
+ "tsc": "tsc -p .",
17
16
  "test-sdk": "npx jest -c jest.config.sdk.js --runInBand",
18
17
  "test": "npm run test-sdk",
19
18
  "lint": "eslint 'src/**'",
@@ -68,12 +67,14 @@
68
67
  "npm-run-all": "^4.1.5",
69
68
  "prettier": "^2.8.8",
70
69
  "ts-jest": "^27.1.1",
70
+ "ts-jest-mock-import-meta": "^1.2.0",
71
71
  "typedoc": "^0.24.4",
72
72
  "typescript": "^4.9.5",
73
73
  "vite": "4.2.1"
74
74
  },
75
75
  "dependencies": {
76
76
  "lodash": "^4.17.21",
77
+ "promise-postmessage": "^3.5.0",
77
78
  "react": "^17.0.2",
78
79
  "react-dom": "^17.0.2"
79
80
  },
@@ -11,7 +11,7 @@ import { TSToChartEvent } from '../types/ts-to-chart-event.types';
11
11
  import { CustomChartContext, getChartContext } from './custom-chart-context';
12
12
  import * as PostMessageEventBridge from './post-message-event-bridge';
13
13
 
14
- jest.mock('./post-message-event-bridge');
14
+ // jest.mock('./post-message-event-bridge');
15
15
 
16
16
  jest.spyOn(console, 'log').mockImplementation(() => {
17
17
  // do nothing.
@@ -39,6 +39,7 @@ describe('CustomChartContext', () => {
39
39
 
40
40
  mockInitMessage.mockImplementation((fn: any) => {
41
41
  eventProcessor = fn;
42
+ return () => null;
42
43
  });
43
44
 
44
45
  mockPostMessageToHost.mockImplementation(() => {
@@ -85,35 +86,29 @@ describe('CustomChartContext', () => {
85
86
  const promise = customChartContext.initialize();
86
87
 
87
88
  // Check that the hasInitializedPromise has resolved
88
- const mockPostMessage = jest.fn();
89
- eventProcessor({
90
- data: {
91
- payload: mockInitializeContextPayload,
92
- eventType: TSToChartEvent.Initialize,
93
- source: 'ts-host-app',
94
- },
95
- ports: [{ postMessage: mockPostMessage }],
89
+
90
+ const initResp = await eventProcessor({
91
+ payload: mockInitializeContextPayload,
92
+ eventType: TSToChartEvent.Initialize,
96
93
  });
97
94
 
98
95
  eventProcessor({
99
- data: {
100
- payload: {},
101
- eventType: TSToChartEvent.InitializeComplete,
102
- source: 'ts-host-app',
103
- },
104
- ports: [{ postMessage: mockPostMessage }],
96
+ payload: {},
97
+ eventType: TSToChartEvent.InitializeComplete,
105
98
  });
106
99
 
107
100
  await expect(promise).resolves.toBeUndefined();
108
- expect(mockPostMessage).toHaveBeenCalledTimes(2);
109
101
 
110
- expect(mockPostMessage.mock.calls[0][0]).toEqual({
102
+ expect(initResp).toEqual({
111
103
  isConfigValid: false,
112
104
  defaultChartConfig: undefined,
113
105
  chartConfigEditorDefinition: undefined,
114
106
  visualPropEditorDefinition: undefined,
107
+ allowedConfigurations: {
108
+ allowColumnNumberFormatting: false,
109
+ allowColumnConditionalFormatting: false,
110
+ },
115
111
  });
116
- expect(mockPostMessage).toHaveBeenCalled();
117
112
  expect(mockPostMessageToHost).not.toHaveBeenCalled();
118
113
  });
119
114
 
@@ -122,23 +117,14 @@ describe('CustomChartContext', () => {
122
117
  const promise = customChartContext.initialize();
123
118
 
124
119
  // Check that the hasInitializedPromise has resolved
125
- const mockPostMessage = jest.fn();
126
120
  eventProcessor({
127
- data: {
128
- payload: mockInitializeContextPayload,
129
- eventType: TSToChartEvent.Initialize,
130
- source: 'ts-host-app',
131
- },
132
- ports: [{ postMessage: mockPostMessage }],
121
+ payload: mockInitializeContextPayload,
122
+ eventType: TSToChartEvent.Initialize,
133
123
  });
134
124
 
135
125
  eventProcessor({
136
- data: {
137
- payload: {},
138
- eventType: TSToChartEvent.InitializeComplete,
139
- source: 'ts-host-app',
140
- },
141
- ports: [{ postMessage: mockPostMessage }],
126
+ payload: {},
127
+ eventType: TSToChartEvent.InitializeComplete,
142
128
  });
143
129
 
144
130
  await expect(promise).resolves.toBeUndefined();
@@ -184,126 +170,75 @@ describe('CustomChartContext', () => {
184
170
  eventProcessor = null;
185
171
  });
186
172
 
187
- test('should not trigger post message if host is not accurate', () => {
188
- expect(mockInitMessage).toHaveBeenCalled();
189
-
190
- // mock the event trigger for ChartConfigValidate
191
- const mockPostMessage = jest.fn();
192
- eventProcessor({
193
- data: {
194
- payload: mockInitializeContextPayload,
195
- eventType: TSToChartEvent.ChartConfigValidate,
196
- source: 'incorrect-source',
197
- },
198
- ports: [{ postMessage: mockPostMessage }],
199
- });
200
- // Check that the event listener was added to the eventListeners
201
- // object
202
- expect(mockPostMessage).not.toHaveBeenCalled();
203
- });
204
-
205
- test('default internal function testing', () => {
173
+ test('default internal function testing', async () => {
206
174
  expect(mockInitMessage).toHaveBeenCalled();
207
175
 
208
176
  // mock the event trigger for ChartConfigValidate
209
- const mockPostMessage = jest.fn();
210
- eventProcessor({
211
- data: {
212
- payload: mockInitializeContextPayload,
213
- eventType: TSToChartEvent.ChartConfigValidate,
214
- source: 'ts-host-app',
215
- },
216
- ports: [{ postMessage: mockPostMessage }],
177
+ const validateChartConfigResp = await eventProcessor({
178
+ payload: mockInitializeContextPayload,
179
+ eventType: TSToChartEvent.ChartConfigValidate,
217
180
  });
218
181
  // Check that the response was received
219
- expect(mockPostMessage).toHaveBeenCalledWith({
182
+ expect(validateChartConfigResp).toEqual({
220
183
  isValid: true,
221
184
  });
222
- mockPostMessage.mockReset();
223
185
 
224
186
  // mock the event trigger for VisualPropsValidate
225
- eventProcessor({
226
- data: {
227
- payload: mockInitializeContextPayload,
228
- eventType: TSToChartEvent.VisualPropsValidate,
229
- source: 'ts-host-app',
230
- },
231
- ports: [{ postMessage: mockPostMessage }],
187
+ const validateVisualPropsResp = await eventProcessor({
188
+ payload: mockInitializeContextPayload,
189
+ eventType: TSToChartEvent.VisualPropsValidate,
232
190
  });
233
191
  // Check that the response was received
234
- expect(mockPostMessage).toHaveBeenCalledWith({
192
+ expect(validateVisualPropsResp).toEqual({
235
193
  isValid: true,
236
194
  });
237
195
 
238
- mockPostMessage.mockReset();
239
-
240
196
  // mock the event trigger for TriggerRenderChart
241
- eventProcessor({
242
- data: {
243
- payload: mockInitializeContextPayload,
244
- eventType: TSToChartEvent.TriggerRenderChart,
245
- source: 'ts-host-app',
246
- },
247
- ports: [{ postMessage: mockPostMessage }],
197
+ const renderResp = await eventProcessor({
198
+ payload: mockInitializeContextPayload,
199
+ eventType: TSToChartEvent.TriggerRenderChart,
248
200
  });
249
201
  // Check that the response was received
250
- expect(mockPostMessage).toHaveBeenCalledWith({});
251
202
  expect(renderChart).toHaveBeenCalled();
252
203
 
253
- mockPostMessage.mockReset();
254
-
255
204
  // mock the event trigger for getQueriesFromChartConfig
256
205
  eventProcessor({
257
- data: {
258
- payload: mockInitializeContextPayload,
259
- eventType: TSToChartEvent.GetDataQuery,
260
- source: 'ts-host-app',
261
- },
262
- ports: [{ postMessage: mockPostMessage }],
206
+ payload: mockInitializeContextPayload,
207
+ eventType: TSToChartEvent.GetDataQuery,
263
208
  });
264
- // Check that the response was received
265
- expect(mockPostMessage).toHaveBeenCalledWith({});
209
+
266
210
  expect(getQueriesFromChartConfig).toHaveBeenCalled();
267
211
  });
268
212
 
269
- test('default external function testing', () => {
213
+ test('default external function testing', async () => {
270
214
  expect(mockInitMessage).toHaveBeenCalled();
271
215
 
272
216
  // mock the event trigger for DataUpdate
273
- const mockPostMessage = jest.fn();
274
- eventProcessor({
275
- data: {
276
- payload: {
277
- data: 'random data',
278
- },
279
- eventType: TSToChartEvent.DataUpdate,
280
- source: 'ts-host-app',
217
+
218
+ const dataUpdateResp = await eventProcessor({
219
+ payload: {
220
+ data: 'random data',
281
221
  },
282
- ports: [{ postMessage: mockPostMessage }],
222
+ eventType: TSToChartEvent.DataUpdate,
283
223
  });
284
224
  // Check that the response was received
285
- expect(mockPostMessage).toHaveBeenCalledWith({
225
+ expect(dataUpdateResp).toEqual({
286
226
  triggerRenderChart: true,
287
227
  });
288
228
  expect(customChartContext.getChartModel().data).toBe('random data');
289
- mockPostMessage.mockReset();
290
229
 
291
230
  // mock the event trigger for VisualPropsValidate
292
- eventProcessor({
293
- data: {
294
- payload: {
295
- chartModel: {
296
- data: 'random data2',
297
- visualProps: null,
298
- },
231
+ const modelUpdateResp = await eventProcessor({
232
+ payload: {
233
+ chartModel: {
234
+ data: 'random data2',
235
+ visualProps: null,
299
236
  },
300
- eventType: TSToChartEvent.ChartModelUpdate,
301
- source: 'ts-host-app',
302
237
  },
303
- ports: [{ postMessage: mockPostMessage }],
238
+ eventType: TSToChartEvent.ChartModelUpdate,
304
239
  });
305
240
  // Check that the response was received
306
- expect(mockPostMessage).toHaveBeenCalledWith({
241
+ expect(modelUpdateResp).toEqual({
307
242
  triggerRenderChart: true,
308
243
  });
309
244
  expect(customChartContext.getChartModel().data).toBe(
@@ -311,27 +246,20 @@ describe('CustomChartContext', () => {
311
246
  );
312
247
  expect(customChartContext.getChartModel().visualProps).toBe(null);
313
248
 
314
- mockPostMessage.mockReset();
315
-
316
249
  // mock the event trigger for VisualPropsUpdate
317
- eventProcessor({
318
- data: {
319
- payload: {
320
- visualProps: 'random data',
321
- },
322
- eventType: TSToChartEvent.VisualPropsUpdate,
323
- source: 'ts-host-app',
250
+ const visualPropsUpdateResp = await eventProcessor({
251
+ payload: {
252
+ visualProps: 'random data',
324
253
  },
325
- ports: [{ postMessage: mockPostMessage }],
254
+ eventType: TSToChartEvent.VisualPropsUpdate,
326
255
  });
327
256
  // Check that the response was received
328
- expect(mockPostMessage).toHaveBeenCalledWith({
257
+ expect(visualPropsUpdateResp).toEqual({
329
258
  triggerRenderChart: true,
330
259
  });
331
260
  expect(customChartContext.getChartModel().visualProps).toBe(
332
261
  'random data',
333
262
  );
334
- mockPostMessage.mockReset();
335
263
 
336
264
  // mock the event trigger for AxisMenuActionClick
337
265
  customChartContext.axisMenuCustomActionPreProcessor([
@@ -346,22 +274,18 @@ describe('CustomChartContext', () => {
346
274
  ],
347
275
  },
348
276
  ] as any);
349
- eventProcessor({
350
- data: {
351
- payload: {
352
- customAction: {
353
- id: 'custom-action-1',
354
- columnIds: ['9f96b5b0-f7e4-4a5e-aa11-4c77fdf42125'],
355
- },
277
+ const axisMenuClickResp = await eventProcessor({
278
+ payload: {
279
+ customAction: {
280
+ id: 'custom-action-1',
281
+ columnIds: ['9f96b5b0-f7e4-4a5e-aa11-4c77fdf42125'],
356
282
  },
357
- eventType: TSToChartEvent.AxisMenuActionClick,
358
- source: 'ts-host-app',
359
283
  },
360
- ports: [{ postMessage: mockPostMessage }],
284
+ eventType: TSToChartEvent.AxisMenuActionClick,
361
285
  });
362
286
  // Check that the response was valid which means action gets
363
287
  // executed successfully
364
- expect(mockPostMessage).toHaveBeenCalledWith({
288
+ expect(axisMenuClickResp).toEqual({
365
289
  isValid: true,
366
290
  });
367
291
 
@@ -378,22 +302,18 @@ describe('CustomChartContext', () => {
378
302
  ],
379
303
  },
380
304
  ] as any);
381
- eventProcessor({
382
- data: {
383
- payload: {
384
- customAction: {
385
- id: 'custom-action-1',
386
- columnIds: ['9f96b5b0-f7e4-4a5e-aa11-4c77fdf42125'],
387
- },
305
+ const ctxMenuResp = await eventProcessor({
306
+ payload: {
307
+ customAction: {
308
+ id: 'custom-action-1',
309
+ columnIds: ['9f96b5b0-f7e4-4a5e-aa11-4c77fdf42125'],
388
310
  },
389
- eventType: TSToChartEvent.ContextMenuActionClick,
390
- source: 'ts-host-app',
391
311
  },
392
- ports: [{ postMessage: mockPostMessage }],
312
+ eventType: TSToChartEvent.ContextMenuActionClick,
393
313
  });
394
314
  // Check that the response was valid which means action gets
395
315
  // executed successfully
396
- expect(mockPostMessage).toHaveBeenCalledWith({
316
+ expect(ctxMenuResp).toEqual({
397
317
  isValid: true,
398
318
  });
399
319
  });
@@ -408,38 +328,30 @@ describe('CustomChartContext', () => {
408
328
  customChartContext.on(TEST_EVENT_TYPE, testCallbackFn);
409
329
 
410
330
  // mock the event trigger
411
- const mockPostMessage = jest.fn();
331
+
412
332
  eventProcessor({
413
- data: {
414
- payload: mockInitializeContextPayload,
415
- eventType: TEST_EVENT_TYPE,
416
- source: 'ts-host-app',
417
- },
418
- ports: [{ postMessage: mockPostMessage }],
333
+ payload: mockInitializeContextPayload,
334
+ eventType: TEST_EVENT_TYPE,
419
335
  });
420
336
  // Check that the event listener was added to the eventListeners
421
337
  // object
422
338
  expect(testCallbackFn).toHaveBeenCalled();
423
339
  });
424
340
 
425
- test('should respond with an error to an unspecified event type', () => {
341
+ test('should respond with an error to an unspecified event type', async () => {
426
342
  expect(mockInitMessage).toHaveBeenCalled();
427
343
  // Define a test event type and callback function
428
344
  const TEST_EVENT_TYPE = 'testEventType' as any;
429
345
 
430
346
  // mock the event trigger
431
- const mockPostMessage = jest.fn();
432
- eventProcessor({
433
- data: {
434
- payload: mockInitializeContextPayload,
435
- eventType: TEST_EVENT_TYPE,
436
- source: 'ts-host-app',
437
- },
438
- ports: [{ postMessage: mockPostMessage }],
347
+
348
+ const resp = await eventProcessor({
349
+ payload: mockInitializeContextPayload,
350
+ eventType: TEST_EVENT_TYPE,
439
351
  });
440
352
  // Check that the event listener was added to the eventListeners
441
353
  // object
442
- expect(mockPostMessage).toHaveBeenCalledWith({
354
+ expect(resp).toEqual({
443
355
  hasError: true,
444
356
  error: `Event type not recognised or processed: ${TEST_EVENT_TYPE}`,
445
357
  });
@@ -473,14 +385,10 @@ describe('CustomChartContext', () => {
473
385
  customChartContext.on(TEST_EVENT_TYPE, testCallbackFn);
474
386
 
475
387
  // mock the event trigger for the test event type
476
- const mockPostMessage = jest.fn();
388
+
477
389
  eventProcessor({
478
- data: {
479
- payload: mockInitializeContextPayload,
480
- eventType: TEST_EVENT_TYPE,
481
- source: 'ts-host-app',
482
- },
483
- ports: [{ postMessage: mockPostMessage }],
390
+ payload: mockInitializeContextPayload,
391
+ eventType: TEST_EVENT_TYPE,
484
392
  });
485
393
 
486
394
  // Call the off function to remove the event listener
@@ -514,22 +422,14 @@ describe('CustomChartContext', () => {
514
422
  ).toHaveLength(1);
515
423
 
516
424
  // Emit events for both event types
517
- const mockPostMessage = jest.fn();
425
+
518
426
  eventProcessor({
519
- data: {
520
- payload: {},
521
- eventType: TEST_EVENT_TYPE_1,
522
- source: 'ts-host-app',
523
- },
524
- ports: [{ postMessage: mockPostMessage }],
427
+ payload: {},
428
+ eventType: TEST_EVENT_TYPE_1,
525
429
  });
526
430
  eventProcessor({
527
- data: {
528
- payload: {},
529
- eventType: TEST_EVENT_TYPE_2,
530
- source: 'ts-host-app',
531
- },
532
- ports: [{ postMessage: mockPostMessage }],
431
+ payload: {},
432
+ eventType: TEST_EVENT_TYPE_2,
533
433
  });
534
434
 
535
435
  // Check that both callback functions were called
@@ -596,28 +496,19 @@ describe('CustomChartContext', () => {
596
496
 
597
497
  test('should resolve the promise if the chart context is initialized', async () => {
598
498
  // Check that the hasInitializedPromise has resolved
599
- const mockPostMessage = jest.fn();
499
+
600
500
  eventProcessor({
601
- data: {
602
- payload: mockInitializeContextPayload,
603
- eventType: TSToChartEvent.Initialize,
604
- source: 'ts-host-app',
605
- },
606
- ports: [{ postMessage: mockPostMessage }],
501
+ payload: mockInitializeContextPayload,
502
+ eventType: TSToChartEvent.Initialize,
607
503
  });
608
504
 
609
505
  eventProcessor({
610
- data: {
611
- payload: {},
612
- eventType: TSToChartEvent.InitializeComplete,
613
- source: 'ts-host-app',
614
- },
615
- ports: [{ postMessage: mockPostMessage }],
506
+ payload: {},
507
+ eventType: TSToChartEvent.InitializeComplete,
616
508
  });
617
509
 
618
510
  const promise = customChartContext.initialize();
619
511
  await expect(promise).resolves.toBeUndefined();
620
- expect(mockPostMessage).toHaveBeenCalledTimes(2);
621
512
 
622
513
  // define mock response for the postMessage response promise
623
514
  let resolve: any;
@@ -672,24 +563,15 @@ describe('CustomChartContext', () => {
672
563
  );
673
564
  });
674
565
  test('should process the event payload for context menu custom actions', async () => {
675
- const mockPostMessage = jest.fn();
676
566
  const mockCustomAction = jest.fn();
677
567
  let resolve: any;
678
568
  eventProcessor({
679
- data: {
680
- payload: mockInitializeContextPayload,
681
- eventType: TSToChartEvent.Initialize,
682
- source: 'ts-host-app',
683
- },
684
- ports: [{ postMessage: mockPostMessage }],
569
+ payload: mockInitializeContextPayload,
570
+ eventType: TSToChartEvent.Initialize,
685
571
  });
686
572
  eventProcessor({
687
- data: {
688
- payload: {},
689
- eventType: TSToChartEvent.InitializeComplete,
690
- source: 'ts-host-app',
691
- },
692
- ports: [{ postMessage: mockPostMessage }],
573
+ payload: {},
574
+ eventType: TSToChartEvent.InitializeComplete,
693
575
  });
694
576
  customChartContext.initialize();
695
577
  mockPostMessageToHost.mockImplementation(
@@ -731,19 +613,15 @@ describe('CustomChartContext', () => {
731
613
  TEST_EVENT_TYPE,
732
614
  );
733
615
  eventProcessor({
734
- data: {
735
- payload: {
736
- customAction: {
737
- id: 'custom-action-1',
738
- clickedPoint: {},
739
- event: {},
740
- selectedPoints: [{}],
741
- },
616
+ payload: {
617
+ customAction: {
618
+ id: 'custom-action-1',
619
+ clickedPoint: {},
620
+ event: {},
621
+ selectedPoints: [{}],
742
622
  },
743
- eventType: TSToChartEvent.ContextMenuActionClick,
744
- source: 'ts-host-app',
745
623
  },
746
- ports: [{ postMessage: mockPostMessage }],
624
+ eventType: TSToChartEvent.ContextMenuActionClick,
747
625
  });
748
626
  expect(mockCustomAction).toHaveBeenCalled();
749
627
  expect(mockCustomAction).toHaveBeenCalledWith({
@@ -754,24 +632,15 @@ describe('CustomChartContext', () => {
754
632
  });
755
633
  });
756
634
  test('should process the event payload for axis menu custom actions', async () => {
757
- const mockPostMessage = jest.fn();
758
635
  const mockCustomAction = jest.fn();
759
636
  let resolve: any;
760
637
  eventProcessor({
761
- data: {
762
- payload: mockInitializeContextPayload,
763
- eventType: TSToChartEvent.Initialize,
764
- source: 'ts-host-app',
765
- },
766
- ports: [{ postMessage: mockPostMessage }],
638
+ payload: mockInitializeContextPayload,
639
+ eventType: TSToChartEvent.Initialize,
767
640
  });
768
641
  eventProcessor({
769
- data: {
770
- payload: {},
771
- eventType: TSToChartEvent.InitializeComplete,
772
- source: 'ts-host-app',
773
- },
774
- ports: [{ postMessage: mockPostMessage }],
642
+ payload: {},
643
+ eventType: TSToChartEvent.InitializeComplete,
775
644
  });
776
645
  customChartContext.initialize();
777
646
  mockPostMessageToHost.mockImplementation(
@@ -813,18 +682,14 @@ describe('CustomChartContext', () => {
813
682
  );
814
683
 
815
684
  eventProcessor({
816
- data: {
817
- payload: {
818
- customAction: {
819
- id: 'custom-action-1',
820
- columnIds: ['123'],
821
- event: {},
822
- },
685
+ payload: {
686
+ customAction: {
687
+ id: 'custom-action-1',
688
+ columnIds: ['123'],
689
+ event: {},
823
690
  },
824
- eventType: TSToChartEvent.AxisMenuActionClick,
825
- source: 'ts-host-app',
826
691
  },
827
- ports: [{ postMessage: mockPostMessage }],
692
+ eventType: TSToChartEvent.AxisMenuActionClick,
828
693
  });
829
694
  expect(mockCustomAction).toHaveBeenCalled();
830
695
  expect(mockCustomAction).toHaveBeenCalledWith({
@@ -835,23 +700,14 @@ describe('CustomChartContext', () => {
835
700
  });
836
701
 
837
702
  test('should process the event payload for axis menu when custom actions are not defined', async () => {
838
- const mockPostMessage = jest.fn();
839
703
  let resolve: any;
840
704
  eventProcessor({
841
- data: {
842
- payload: mockInitializeContextPayload,
843
- eventType: TSToChartEvent.Initialize,
844
- source: 'ts-host-app',
845
- },
846
- ports: [{ postMessage: mockPostMessage }],
705
+ payload: mockInitializeContextPayload,
706
+ eventType: TSToChartEvent.Initialize,
847
707
  });
848
708
  eventProcessor({
849
- data: {
850
- payload: {},
851
- eventType: TSToChartEvent.InitializeComplete,
852
- source: 'ts-host-app',
853
- },
854
- ports: [{ postMessage: mockPostMessage }],
709
+ payload: {},
710
+ eventType: TSToChartEvent.InitializeComplete,
855
711
  });
856
712
  customChartContext.initialize();
857
713
  mockPostMessageToHost.mockImplementation(
@@ -876,23 +732,14 @@ describe('CustomChartContext', () => {
876
732
  });
877
733
 
878
734
  test('should process the event payload for context menu when custom actions are not defined', async () => {
879
- const mockPostMessage = jest.fn();
880
735
  let resolve: any;
881
736
  eventProcessor({
882
- data: {
883
- payload: mockInitializeContextPayload,
884
- eventType: TSToChartEvent.Initialize,
885
- source: 'ts-host-app',
886
- },
887
- ports: [{ postMessage: mockPostMessage }],
737
+ payload: mockInitializeContextPayload,
738
+ eventType: TSToChartEvent.Initialize,
888
739
  });
889
740
  eventProcessor({
890
- data: {
891
- payload: {},
892
- eventType: TSToChartEvent.InitializeComplete,
893
- source: 'ts-host-app',
894
- },
895
- ports: [{ postMessage: mockPostMessage }],
741
+ payload: {},
742
+ eventType: TSToChartEvent.InitializeComplete,
896
743
  });
897
744
  customChartContext.initialize();
898
745
  mockPostMessageToHost.mockImplementation(