@servicetitan/titan-chatbot-api 7.1.2 → 8.0.0

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 (109) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/api-client/__mocks__/chatbot-api-client.mock.js +21 -47
  3. package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -1
  4. package/dist/api-client/base/chatbot-api-client.js +3 -4
  5. package/dist/api-client/base/chatbot-api-client.js.map +1 -1
  6. package/dist/api-client/help-center/__tests__/converter-from-models.test.js +48 -15
  7. package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +1 -1
  8. package/dist/api-client/help-center/__tests__/converter-to-models.test.js +23 -22
  9. package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +1 -1
  10. package/dist/api-client/help-center/chatbot-api-client.js +51 -52
  11. package/dist/api-client/help-center/chatbot-api-client.js.map +1 -1
  12. package/dist/api-client/help-center/converter-from-models.js +15 -12
  13. package/dist/api-client/help-center/converter-from-models.js.map +1 -1
  14. package/dist/api-client/help-center/converter-to-models.js +29 -26
  15. package/dist/api-client/help-center/converter-to-models.js.map +1 -1
  16. package/dist/api-client/help-center/index.d.ts +2 -1
  17. package/dist/api-client/help-center/index.d.ts.map +1 -1
  18. package/dist/api-client/help-center/index.js +1 -0
  19. package/dist/api-client/help-center/index.js.map +1 -1
  20. package/dist/api-client/help-center/native-client.js +1192 -2884
  21. package/dist/api-client/help-center/native-client.js.map +1 -1
  22. package/dist/api-client/index.d.ts +2 -1
  23. package/dist/api-client/index.d.ts.map +1 -1
  24. package/dist/api-client/index.js +14 -7
  25. package/dist/api-client/index.js.map +1 -1
  26. package/dist/api-client/models/__mocks__/models.mock.js +154 -124
  27. package/dist/api-client/models/__mocks__/models.mock.js.map +1 -1
  28. package/dist/api-client/models/index.d.ts +2 -1
  29. package/dist/api-client/models/index.d.ts.map +1 -1
  30. package/dist/api-client/models/index.js +8 -7
  31. package/dist/api-client/models/index.js.map +1 -1
  32. package/dist/api-client/titan-chat/__tests__/native-client.test.js +6 -6
  33. package/dist/api-client/titan-chat/__tests__/native-client.test.js.map +1 -1
  34. package/dist/api-client/titan-chat/chatbot-api-client.js +40 -35
  35. package/dist/api-client/titan-chat/chatbot-api-client.js.map +1 -1
  36. package/dist/api-client/titan-chat/index.d.ts +2 -1
  37. package/dist/api-client/titan-chat/index.d.ts.map +1 -1
  38. package/dist/api-client/titan-chat/index.js +1 -0
  39. package/dist/api-client/titan-chat/index.js.map +1 -1
  40. package/dist/api-client/titan-chat/native-client.js +359 -812
  41. package/dist/api-client/titan-chat/native-client.js.map +1 -1
  42. package/dist/api-client/utils/__tests__/model-utils.test.js +454 -191
  43. package/dist/api-client/utils/__tests__/model-utils.test.js.map +1 -1
  44. package/dist/api-client/utils/model-utils.d.ts.map +1 -1
  45. package/dist/api-client/utils/model-utils.js +28 -25
  46. package/dist/api-client/utils/model-utils.js.map +1 -1
  47. package/dist/hooks/use-customization-chatbot.js +2 -1
  48. package/dist/hooks/use-customization-chatbot.js.map +1 -1
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +6 -5
  52. package/dist/index.js.map +1 -1
  53. package/dist/models/chatbot-customizations.js +2 -1
  54. package/dist/models/chatbot-customizations.js.map +1 -1
  55. package/dist/models/index.d.ts +1 -1
  56. package/dist/models/index.d.ts.map +1 -1
  57. package/dist/models/index.js +2 -1
  58. package/dist/models/index.js.map +1 -1
  59. package/dist/stores/__tests__/chatbot-ui-backend.store.test.js +267 -172
  60. package/dist/stores/__tests__/chatbot-ui-backend.store.test.js.map +1 -1
  61. package/dist/stores/__tests__/chatbot-ui.store.test.js +61 -64
  62. package/dist/stores/__tests__/chatbot-ui.store.test.js.map +1 -1
  63. package/dist/stores/__tests__/filter.store.test.js +243 -116
  64. package/dist/stores/__tests__/filter.store.test.js.map +1 -1
  65. package/dist/stores/__tests__/initialize.store.test.js +9 -8
  66. package/dist/stores/__tests__/initialize.store.test.js.map +1 -1
  67. package/dist/stores/__tests__/message-feedback-guardrail.store.test.js +8 -7
  68. package/dist/stores/__tests__/message-feedback-guardrail.store.test.js.map +1 -1
  69. package/dist/stores/__tests__/message-feedback.store.test.js +34 -27
  70. package/dist/stores/__tests__/message-feedback.store.test.js.map +1 -1
  71. package/dist/stores/__tests__/session-feedback.store.test.js +9 -8
  72. package/dist/stores/__tests__/session-feedback.store.test.js.map +1 -1
  73. package/dist/stores/chatbot-ui-backend.store.js +171 -240
  74. package/dist/stores/chatbot-ui-backend.store.js.map +1 -1
  75. package/dist/stores/chatbot-ui.store.js +73 -46
  76. package/dist/stores/chatbot-ui.store.js.map +1 -1
  77. package/dist/stores/filter.store.js +298 -378
  78. package/dist/stores/filter.store.js.map +1 -1
  79. package/dist/stores/index.d.ts +5 -3
  80. package/dist/stores/index.d.ts.map +1 -1
  81. package/dist/stores/index.js +3 -2
  82. package/dist/stores/index.js.map +1 -1
  83. package/dist/stores/initialize.store.js +55 -51
  84. package/dist/stores/initialize.store.js.map +1 -1
  85. package/dist/stores/message-feedback-base.store.js +2 -1
  86. package/dist/stores/message-feedback-base.store.js.map +1 -1
  87. package/dist/stores/message-feedback-guardrail.store.js +50 -47
  88. package/dist/stores/message-feedback-guardrail.store.js.map +1 -1
  89. package/dist/stores/message-feedback.store.js +84 -89
  90. package/dist/stores/message-feedback.store.js.map +1 -1
  91. package/dist/stores/session-feedback.store.js +46 -39
  92. package/dist/stores/session-feedback.store.js.map +1 -1
  93. package/dist/utils/__tests__/axios-utils.test.js +8 -7
  94. package/dist/utils/__tests__/axios-utils.test.js.map +1 -1
  95. package/dist/utils/axios-utils.js +9 -7
  96. package/dist/utils/axios-utils.js.map +1 -1
  97. package/dist/utils/test-utils.js +5 -5
  98. package/dist/utils/test-utils.js.map +1 -1
  99. package/package.json +3 -3
  100. package/src/api-client/help-center/index.ts +2 -1
  101. package/src/api-client/help-center/native-client.ts +4 -4
  102. package/src/api-client/index.ts +2 -6
  103. package/src/api-client/models/index.ts +15 -13
  104. package/src/api-client/titan-chat/index.ts +2 -1
  105. package/src/api-client/utils/model-utils.ts +4 -8
  106. package/src/index.ts +1 -1
  107. package/src/models/index.ts +1 -1
  108. package/src/stores/index.ts +5 -12
  109. package/tsconfig.tsbuildinfo +1 -1
@@ -1,377 +1,615 @@
1
1
  import { expect } from '@jest/globals';
2
2
  import { Models, ModelsMocks } from '../..';
3
3
  import { createSelectionsModel } from '../model-utils';
4
- describe('[model-utils] createSelectionsModel', () => {
5
- afterEach(() => {
4
+ describe('[model-utils] createSelectionsModel', ()=>{
5
+ afterEach(()=>{
6
6
  jest.clearAllMocks();
7
7
  });
8
- describe('with no selections', () => {
9
- test('should return undefined when no selections are made', () => {
8
+ describe('with no selections', ()=>{
9
+ test('should return undefined when no selections are made', ()=>{
10
10
  const frontendModel = ModelsMocks.mockFrontendModel();
11
- const filters = [frontendModel.options];
11
+ const filters = [
12
+ frontendModel.options
13
+ ];
12
14
  const selected = new Map();
13
15
  const result = createSelectionsModel(filters, selected);
14
16
  expect(result).toBeUndefined();
15
17
  });
16
- test('should return undefined when selected map is empty', () => {
18
+ test('should return undefined when selected map is empty', ()=>{
17
19
  const frontendModel = ModelsMocks.mockFrontendModel();
18
- const filters = [frontendModel.options];
20
+ const filters = [
21
+ frontendModel.options
22
+ ];
19
23
  const selected = new Map();
20
24
  const result = createSelectionsModel(filters, selected);
21
25
  expect(result).toBeUndefined();
22
26
  });
23
- test('should handle empty selection arrays', () => {
27
+ test('should handle empty selection arrays', ()=>{
24
28
  const frontendModel = ModelsMocks.mockFrontendModel();
25
- const filters = [frontendModel.options];
29
+ const filters = [
30
+ frontendModel.options
31
+ ];
26
32
  const selected = new Map([
27
- ['Sources', []],
28
- ['ContentTypes', []],
33
+ [
34
+ 'Sources',
35
+ []
36
+ ],
37
+ [
38
+ 'ContentTypes',
39
+ []
40
+ ]
29
41
  ]);
30
42
  const result = createSelectionsModel(filters, selected);
31
43
  expect(result).toBeUndefined();
32
44
  });
33
45
  });
34
- describe('with flat filter structure (leaf filters only)', () => {
35
- test('top level, single filter, single value', () => {
36
- var _a;
46
+ describe('with flat filter structure (leaf filters only)', ()=>{
47
+ test('top level, single filter, single value', ()=>{
48
+ var _flatModel_options_subOptions;
37
49
  const flatModel = ModelsMocks.mockFrontendModelFlat();
38
- const flatFilters = (_a = flatModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
39
- const selected = new Map([['ContentTypes', ['kbReleaseNotes']]]);
50
+ const flatFilters = (_flatModel_options_subOptions = flatModel.options.subOptions) !== null && _flatModel_options_subOptions !== void 0 ? _flatModel_options_subOptions : [];
51
+ const selected = new Map([
52
+ [
53
+ 'ContentTypes',
54
+ [
55
+ 'kbReleaseNotes'
56
+ ]
57
+ ]
58
+ ]);
40
59
  const result = createSelectionsModel(flatFilters, selected);
41
60
  expect(result).toEqual({
42
61
  subOptions: {
43
62
  ContentTypes: {
44
- values: ['kbReleaseNotes'],
45
- },
46
- },
63
+ values: [
64
+ 'kbReleaseNotes'
65
+ ]
66
+ }
67
+ }
47
68
  });
48
69
  });
49
- test('top level, single filter, multiple values', () => {
50
- var _a;
70
+ test('top level, single filter, multiple values', ()=>{
71
+ var _flatModel_options_subOptions;
51
72
  const flatModel = ModelsMocks.mockFrontendModelFlat();
52
- const flatFilters = (_a = flatModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
73
+ const flatFilters = (_flatModel_options_subOptions = flatModel.options.subOptions) !== null && _flatModel_options_subOptions !== void 0 ? _flatModel_options_subOptions : [];
53
74
  const selected = new Map([
54
- ['ContentTypes', ['kbReleaseNotes', 'kbFaq', 'kbHowTo']],
75
+ [
76
+ 'ContentTypes',
77
+ [
78
+ 'kbReleaseNotes',
79
+ 'kbFaq',
80
+ 'kbHowTo'
81
+ ]
82
+ ]
55
83
  ]);
56
84
  const result = createSelectionsModel(flatFilters, selected);
57
85
  expect(result).toEqual({
58
86
  subOptions: {
59
87
  ContentTypes: {
60
- values: ['kbReleaseNotes', 'kbFaq', 'kbHowTo'],
61
- },
62
- },
88
+ values: [
89
+ 'kbReleaseNotes',
90
+ 'kbFaq',
91
+ 'kbHowTo'
92
+ ]
93
+ }
94
+ }
63
95
  });
64
96
  });
65
- test('top level, multiple filter, multiple values', () => {
66
- var _a;
97
+ test('top level, multiple filter, multiple values', ()=>{
98
+ var _flatModel_options_subOptions;
67
99
  const flatModel = ModelsMocks.mockFrontendModelFlat();
68
- const flatFilters = (_a = flatModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
100
+ const flatFilters = (_flatModel_options_subOptions = flatModel.options.subOptions) !== null && _flatModel_options_subOptions !== void 0 ? _flatModel_options_subOptions : [];
69
101
  const selected = new Map([
70
- ['ContentTypes', ['kbReleaseNotes', 'kbFaq']],
71
- ['ProductAreas', ['Marketing']],
102
+ [
103
+ 'ContentTypes',
104
+ [
105
+ 'kbReleaseNotes',
106
+ 'kbFaq'
107
+ ]
108
+ ],
109
+ [
110
+ 'ProductAreas',
111
+ [
112
+ 'Marketing'
113
+ ]
114
+ ]
72
115
  ]);
73
116
  const result = createSelectionsModel(flatFilters, selected);
74
117
  expect(result).toEqual({
75
118
  subOptions: {
76
119
  ContentTypes: {
77
- values: ['kbReleaseNotes', 'kbFaq'],
120
+ values: [
121
+ 'kbReleaseNotes',
122
+ 'kbFaq'
123
+ ]
78
124
  },
79
125
  ProductAreas: {
80
- values: ['Marketing'],
81
- },
82
- },
126
+ values: [
127
+ 'Marketing'
128
+ ]
129
+ }
130
+ }
83
131
  });
84
132
  });
85
- test('non-existing filter', () => {
86
- var _a;
133
+ test('non-existing filter', ()=>{
134
+ var _flatModel_options_subOptions;
87
135
  const flatModel = ModelsMocks.mockFrontendModelFlat();
88
- const flatFilters = (_a = flatModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
136
+ const flatFilters = (_flatModel_options_subOptions = flatModel.options.subOptions) !== null && _flatModel_options_subOptions !== void 0 ? _flatModel_options_subOptions : [];
89
137
  const selected = new Map([
90
- ['ContentTypes', ['kbReleaseNotes', 'nonExistentOption']],
138
+ [
139
+ 'ContentTypes',
140
+ [
141
+ 'kbReleaseNotes',
142
+ 'nonExistentOption'
143
+ ]
144
+ ]
91
145
  ]);
92
146
  const result = createSelectionsModel(flatFilters, selected);
93
147
  expect(result).toEqual({
94
148
  subOptions: {
95
149
  ContentTypes: {
96
- values: ['kbReleaseNotes'],
97
- },
98
- },
150
+ values: [
151
+ 'kbReleaseNotes'
152
+ ]
153
+ }
154
+ }
99
155
  });
100
156
  });
101
- test('no valid filters', () => {
102
- var _a;
157
+ test('no valid filters', ()=>{
158
+ var _flatModel_options_subOptions;
103
159
  const flatModel = ModelsMocks.mockFrontendModelFlat();
104
- const flatFilters = (_a = flatModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
160
+ const flatFilters = (_flatModel_options_subOptions = flatModel.options.subOptions) !== null && _flatModel_options_subOptions !== void 0 ? _flatModel_options_subOptions : [];
105
161
  const selected = new Map([
106
- ['ContentTypes', ['nonExistent1', 'nonExistent2']],
162
+ [
163
+ 'ContentTypes',
164
+ [
165
+ 'nonExistent1',
166
+ 'nonExistent2'
167
+ ]
168
+ ]
107
169
  ]);
108
170
  const result = createSelectionsModel(flatFilters, selected);
109
171
  expect(result).toBeUndefined();
110
172
  });
111
173
  });
112
- describe('with mixed filter structure', () => {
113
- test('top level, single filter, single value', () => {
114
- var _a;
174
+ describe('with mixed filter structure', ()=>{
175
+ test('top level, single filter, single value', ()=>{
176
+ var _frontendModel_options_subOptions;
115
177
  const frontendModel = ModelsMocks.mockFrontendModelMixed();
116
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
117
- const selected = new Map([['Sources', ['Jarvis']]]);
178
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
179
+ const selected = new Map([
180
+ [
181
+ 'Sources',
182
+ [
183
+ 'Jarvis'
184
+ ]
185
+ ]
186
+ ]);
118
187
  const result = createSelectionsModel(filters, selected);
119
188
  expect(result).toEqual({
120
189
  subOptions: {
121
190
  Sources: {
122
- values: ['Jarvis'],
123
- },
124
- },
191
+ values: [
192
+ 'Jarvis'
193
+ ]
194
+ }
195
+ }
125
196
  });
126
197
  });
127
- test('top level, multiple filters, single value', () => {
128
- var _a;
198
+ test('top level, multiple filters, single value', ()=>{
199
+ var _frontendModel_options_subOptions;
129
200
  const frontendModel = ModelsMocks.mockFrontendModelMixed();
130
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
131
- const selected = new Map([['Sources', ['KnowledgeBase', 'Jarvis']]]);
201
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
202
+ const selected = new Map([
203
+ [
204
+ 'Sources',
205
+ [
206
+ 'KnowledgeBase',
207
+ 'Jarvis'
208
+ ]
209
+ ]
210
+ ]);
132
211
  const result = createSelectionsModel(filters, selected);
133
212
  expect(result).toEqual({
134
213
  subOptions: {
135
214
  Sources: {
136
- values: ['KnowledgeBase', 'Jarvis'],
137
- },
138
- },
215
+ values: [
216
+ 'KnowledgeBase',
217
+ 'Jarvis'
218
+ ]
219
+ }
220
+ }
139
221
  });
140
222
  });
141
- test('all levels, multiple filters, multiple values', () => {
142
- var _a;
223
+ test('all levels, multiple filters, multiple values', ()=>{
224
+ var _frontendModel_options_subOptions;
143
225
  const frontendModel = ModelsMocks.mockFrontendModelMixed();
144
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
226
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
145
227
  const selected = new Map([
146
- ['Sources', ['KnowledgeBase', 'Jarvis']],
147
- ['ContentTypes', ['kbReleaseNotes']],
148
- ['ProductAreas', ['Marketing']],
228
+ [
229
+ 'Sources',
230
+ [
231
+ 'KnowledgeBase',
232
+ 'Jarvis'
233
+ ]
234
+ ],
235
+ [
236
+ 'ContentTypes',
237
+ [
238
+ 'kbReleaseNotes'
239
+ ]
240
+ ],
241
+ [
242
+ 'ProductAreas',
243
+ [
244
+ 'Marketing'
245
+ ]
246
+ ]
149
247
  ]);
150
248
  const result = createSelectionsModel(filters, selected);
151
249
  expect(result).toEqual({
152
250
  subOptions: {
153
251
  Sources: {
154
- values: ['KnowledgeBase', 'Jarvis'],
252
+ values: [
253
+ 'KnowledgeBase',
254
+ 'Jarvis'
255
+ ],
155
256
  subOptions: {
156
257
  KnowledgeBase: {
157
258
  subOptions: {
158
259
  ContentTypes: {
159
- values: ['kbReleaseNotes'],
260
+ values: [
261
+ 'kbReleaseNotes'
262
+ ]
160
263
  },
161
264
  ProductAreas: {
162
- values: ['Marketing'],
163
- },
164
- },
165
- },
166
- },
167
- },
168
- },
265
+ values: [
266
+ 'Marketing'
267
+ ]
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
169
274
  });
170
275
  });
171
276
  });
172
- describe('with nested filter structure', () => {
173
- test('top level, single filter, single value', () => {
174
- var _a;
277
+ describe('with nested filter structure', ()=>{
278
+ test('top level, single filter, single value', ()=>{
279
+ var _frontendModel_options_subOptions;
175
280
  const frontendModel = ModelsMocks.mockFrontendModel();
176
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
177
- const selected = new Map([['Sources', ['KnowledgeBase']]]);
281
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
282
+ const selected = new Map([
283
+ [
284
+ 'Sources',
285
+ [
286
+ 'KnowledgeBase'
287
+ ]
288
+ ]
289
+ ]);
178
290
  const result = createSelectionsModel(filters, selected);
179
291
  expect(result).toEqual({
180
292
  subOptions: {
181
293
  Sources: {
182
- values: ['KnowledgeBase'],
183
- },
184
- },
294
+ values: [
295
+ 'KnowledgeBase'
296
+ ]
297
+ }
298
+ }
185
299
  });
186
300
  });
187
- test('all levels, multiple filters, single value', () => {
188
- var _a;
301
+ test('all levels, multiple filters, single value', ()=>{
302
+ var _frontendModel_options_subOptions;
189
303
  const frontendModel = ModelsMocks.mockFrontendModel();
190
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
304
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
191
305
  const selected = new Map([
192
- ['Sources', ['KnowledgeBase']],
193
- ['ContentTypes', ['kbReleaseNotes']],
306
+ [
307
+ 'Sources',
308
+ [
309
+ 'KnowledgeBase'
310
+ ]
311
+ ],
312
+ [
313
+ 'ContentTypes',
314
+ [
315
+ 'kbReleaseNotes'
316
+ ]
317
+ ]
194
318
  ]);
195
319
  const result = createSelectionsModel(filters, selected);
196
320
  expect(result).toEqual({
197
321
  subOptions: {
198
322
  Sources: {
199
- values: ['KnowledgeBase'],
323
+ values: [
324
+ 'KnowledgeBase'
325
+ ],
200
326
  subOptions: {
201
327
  KnowledgeBase: {
202
328
  subOptions: {
203
329
  ContentTypes: {
204
- values: ['kbReleaseNotes'],
205
- },
206
- },
207
- },
208
- },
209
- },
210
- },
330
+ values: [
331
+ 'kbReleaseNotes'
332
+ ]
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
211
339
  });
212
340
  });
213
- test('all levels, multiple filters, multiple values (with shared sub option)', () => {
214
- var _a;
341
+ test('all levels, multiple filters, multiple values (with shared sub option)', ()=>{
342
+ var _frontendModel_options_subOptions;
215
343
  const frontendModel = ModelsMocks.mockFrontendModel();
216
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
344
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
217
345
  const selected = new Map([
218
- ['Sources', ['KnowledgeBase', 'Jarvis']],
219
- ['ContentTypes', ['kbReleaseNotes']],
346
+ [
347
+ 'Sources',
348
+ [
349
+ 'KnowledgeBase',
350
+ 'Jarvis'
351
+ ]
352
+ ],
353
+ [
354
+ 'ContentTypes',
355
+ [
356
+ 'kbReleaseNotes'
357
+ ]
358
+ ]
220
359
  ]);
221
360
  const result = createSelectionsModel(filters, selected);
222
361
  expect(result).toEqual({
223
362
  subOptions: {
224
363
  Sources: {
225
- values: ['KnowledgeBase', 'Jarvis'],
364
+ values: [
365
+ 'KnowledgeBase',
366
+ 'Jarvis'
367
+ ],
226
368
  subOptions: {
227
369
  KnowledgeBase: {
228
370
  subOptions: {
229
371
  ContentTypes: {
230
- values: ['kbReleaseNotes'],
231
- },
232
- },
372
+ values: [
373
+ 'kbReleaseNotes'
374
+ ]
375
+ }
376
+ }
233
377
  },
234
378
  Jarvis: {
235
379
  subOptions: {
236
380
  ContentTypes: {
237
- values: ['kbReleaseNotes'],
238
- },
239
- },
240
- },
241
- },
242
- },
243
- },
381
+ values: [
382
+ 'kbReleaseNotes'
383
+ ]
384
+ }
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
244
390
  });
245
391
  });
246
- test('all levels, multiple filters, multiple values (with mixed sub options)', () => {
247
- var _a;
392
+ test('all levels, multiple filters, multiple values (with mixed sub options)', ()=>{
393
+ var _frontendModel_options_subOptions;
248
394
  const frontendModel = ModelsMocks.mockFrontendModel();
249
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
395
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
250
396
  const selected = new Map([
251
- ['Sources', ['KnowledgeBase', 'Jarvis']],
252
- ['ContentTypes', ['kbReleaseNotes', 'kbFaq', 'xxx']],
397
+ [
398
+ 'Sources',
399
+ [
400
+ 'KnowledgeBase',
401
+ 'Jarvis'
402
+ ]
403
+ ],
404
+ [
405
+ 'ContentTypes',
406
+ [
407
+ 'kbReleaseNotes',
408
+ 'kbFaq',
409
+ 'xxx'
410
+ ]
411
+ ]
253
412
  ]);
254
413
  const result = createSelectionsModel(filters, selected);
255
414
  expect(result).toEqual({
256
415
  subOptions: {
257
416
  Sources: {
258
- values: ['KnowledgeBase', 'Jarvis'],
417
+ values: [
418
+ 'KnowledgeBase',
419
+ 'Jarvis'
420
+ ],
259
421
  subOptions: {
260
422
  KnowledgeBase: {
261
423
  subOptions: {
262
424
  ContentTypes: {
263
- values: ['kbReleaseNotes', 'kbFaq'],
264
- },
265
- },
425
+ values: [
426
+ 'kbReleaseNotes',
427
+ 'kbFaq'
428
+ ]
429
+ }
430
+ }
266
431
  },
267
432
  Jarvis: {
268
433
  subOptions: {
269
434
  ContentTypes: {
270
- values: ['kbReleaseNotes', 'xxx'],
271
- },
272
- },
273
- },
274
- },
275
- },
276
- },
435
+ values: [
436
+ 'kbReleaseNotes',
437
+ 'xxx'
438
+ ]
439
+ }
440
+ }
441
+ }
442
+ }
443
+ }
444
+ }
277
445
  });
278
446
  });
279
- test('all levels, multiple filters, multiple values', () => {
280
- var _a;
447
+ test('all levels, multiple filters, multiple values', ()=>{
448
+ var _frontendModel_options_subOptions;
281
449
  const frontendModel = ModelsMocks.mockFrontendModel();
282
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
450
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
283
451
  const selected = new Map([
284
- ['Sources', ['KnowledgeBase']],
285
- ['ProductAreas', ['Marketing', 'Marketing Pro']],
452
+ [
453
+ 'Sources',
454
+ [
455
+ 'KnowledgeBase'
456
+ ]
457
+ ],
458
+ [
459
+ 'ProductAreas',
460
+ [
461
+ 'Marketing',
462
+ 'Marketing Pro'
463
+ ]
464
+ ]
286
465
  ]);
287
466
  const result = createSelectionsModel(filters, selected);
288
467
  expect(result).toEqual({
289
468
  subOptions: {
290
469
  Sources: {
291
- values: ['KnowledgeBase'],
470
+ values: [
471
+ 'KnowledgeBase'
472
+ ],
292
473
  subOptions: {
293
474
  KnowledgeBase: {
294
475
  subOptions: {
295
476
  ProductAreas: {
296
- values: ['Marketing', 'Marketing Pro'],
297
- },
298
- },
299
- },
300
- },
301
- },
302
- },
477
+ values: [
478
+ 'Marketing',
479
+ 'Marketing Pro'
480
+ ]
481
+ }
482
+ }
483
+ }
484
+ }
485
+ }
486
+ }
303
487
  });
304
488
  });
305
- test('all levels, multiple filters, multiple values (more values)', () => {
306
- var _a;
489
+ test('all levels, multiple filters, multiple values (more values)', ()=>{
490
+ var _frontendModel_options_subOptions;
307
491
  const frontendModel = ModelsMocks.mockFrontendModel();
308
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
492
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
309
493
  const selected = new Map([
310
- ['Sources', ['KnowledgeBase']],
311
- ['ContentTypes', ['kbReleaseNotes', 'kbHowTo']],
312
- ['ProductAreas', ['Marketing']],
494
+ [
495
+ 'Sources',
496
+ [
497
+ 'KnowledgeBase'
498
+ ]
499
+ ],
500
+ [
501
+ 'ContentTypes',
502
+ [
503
+ 'kbReleaseNotes',
504
+ 'kbHowTo'
505
+ ]
506
+ ],
507
+ [
508
+ 'ProductAreas',
509
+ [
510
+ 'Marketing'
511
+ ]
512
+ ]
313
513
  ]);
314
514
  const result = createSelectionsModel(filters, selected);
315
515
  expect(result).toEqual({
316
516
  subOptions: {
317
517
  Sources: {
318
- values: ['KnowledgeBase'],
518
+ values: [
519
+ 'KnowledgeBase'
520
+ ],
319
521
  subOptions: {
320
522
  KnowledgeBase: {
321
523
  subOptions: {
322
524
  ContentTypes: {
323
- values: ['kbReleaseNotes', 'kbHowTo'],
525
+ values: [
526
+ 'kbReleaseNotes',
527
+ 'kbHowTo'
528
+ ]
324
529
  },
325
530
  ProductAreas: {
326
- values: ['Marketing'],
327
- },
328
- },
329
- },
330
- },
331
- },
332
- },
531
+ values: [
532
+ 'Marketing'
533
+ ]
534
+ }
535
+ }
536
+ }
537
+ }
538
+ }
539
+ }
333
540
  });
334
541
  });
335
- test('all levels, multiple filters, multiple values (more values2)', () => {
336
- var _a;
542
+ test('all levels, multiple filters, multiple values (more values2)', ()=>{
543
+ var _frontendModel_options_subOptions;
337
544
  const frontendModel = ModelsMocks.mockFrontendModel();
338
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
545
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
339
546
  const selected = new Map([
340
- ['Sources', ['KnowledgeBase', 'Jarvis']],
341
- ['ContentTypes', ['kbReleaseNotes', 'yyy', 'kbHowTo']],
342
- ['ProductAreas', ['Marketing', 'Marketing Pro']],
547
+ [
548
+ 'Sources',
549
+ [
550
+ 'KnowledgeBase',
551
+ 'Jarvis'
552
+ ]
553
+ ],
554
+ [
555
+ 'ContentTypes',
556
+ [
557
+ 'kbReleaseNotes',
558
+ 'yyy',
559
+ 'kbHowTo'
560
+ ]
561
+ ],
562
+ [
563
+ 'ProductAreas',
564
+ [
565
+ 'Marketing',
566
+ 'Marketing Pro'
567
+ ]
568
+ ]
343
569
  ]);
344
570
  const result = createSelectionsModel(filters, selected);
345
571
  expect(result).toEqual({
346
572
  subOptions: {
347
573
  Sources: {
348
- values: ['KnowledgeBase', 'Jarvis'],
574
+ values: [
575
+ 'KnowledgeBase',
576
+ 'Jarvis'
577
+ ],
349
578
  subOptions: {
350
579
  KnowledgeBase: {
351
580
  subOptions: {
352
581
  ContentTypes: {
353
- values: ['kbReleaseNotes', 'kbHowTo'],
582
+ values: [
583
+ 'kbReleaseNotes',
584
+ 'kbHowTo'
585
+ ]
354
586
  },
355
587
  ProductAreas: {
356
- values: ['Marketing', 'Marketing Pro'],
357
- },
358
- },
588
+ values: [
589
+ 'Marketing',
590
+ 'Marketing Pro'
591
+ ]
592
+ }
593
+ }
359
594
  },
360
595
  Jarvis: {
361
596
  subOptions: {
362
597
  ContentTypes: {
363
- values: ['kbReleaseNotes', 'yyy'],
364
- },
365
- },
366
- },
367
- },
368
- },
369
- },
598
+ values: [
599
+ 'kbReleaseNotes',
600
+ 'yyy'
601
+ ]
602
+ }
603
+ }
604
+ }
605
+ }
606
+ }
607
+ }
370
608
  });
371
609
  });
372
610
  });
373
- describe('edge cases', () => {
374
- test('should ignore non-Group type filters', () => {
611
+ describe('edge cases', ()=>{
612
+ test('should ignore non-Group type filters', ()=>{
375
613
  const customFilters = [
376
614
  new Models.Option({
377
615
  key: 'NotAGroup',
@@ -381,35 +619,59 @@ describe('[model-utils] createSelectionsModel', () => {
381
619
  new Models.Option({
382
620
  key: 'option1',
383
621
  displayName: 'Option 1',
384
- type: Models.OptionType.Selectable,
385
- }),
386
- ],
387
- }),
622
+ type: Models.OptionType.Selectable
623
+ })
624
+ ]
625
+ })
388
626
  ];
389
- const selected = new Map([['NotAGroup', ['option1']]]);
627
+ const selected = new Map([
628
+ [
629
+ 'NotAGroup',
630
+ [
631
+ 'option1'
632
+ ]
633
+ ]
634
+ ]);
390
635
  const result = createSelectionsModel(customFilters, selected);
391
636
  expect(result).toBeUndefined();
392
637
  });
393
- test('should handle filters with no subOptions', () => {
638
+ test('should handle filters with no subOptions', ()=>{
394
639
  const customFilters = [
395
640
  new Models.Option({
396
641
  key: 'EmptyFilter',
397
642
  displayName: 'Empty Filter',
398
643
  type: Models.OptionType.Group,
399
- subOptions: [],
400
- }),
644
+ subOptions: []
645
+ })
401
646
  ];
402
- const selected = new Map([['EmptyFilter', ['anything']]]);
647
+ const selected = new Map([
648
+ [
649
+ 'EmptyFilter',
650
+ [
651
+ 'anything'
652
+ ]
653
+ ]
654
+ ]);
403
655
  const result = createSelectionsModel(customFilters, selected);
404
656
  expect(result).toBeUndefined();
405
657
  });
406
- test('should create proper Selections model structure', () => {
407
- var _a;
658
+ test('should create proper Selections model structure', ()=>{
659
+ var _frontendModel_options_subOptions;
408
660
  const frontendModel = ModelsMocks.mockFrontendModel();
409
- const filters = (_a = frontendModel.options.subOptions) !== null && _a !== void 0 ? _a : [];
661
+ const filters = (_frontendModel_options_subOptions = frontendModel.options.subOptions) !== null && _frontendModel_options_subOptions !== void 0 ? _frontendModel_options_subOptions : [];
410
662
  const selected = new Map([
411
- ['Sources', ['KnowledgeBase']],
412
- ['ContentTypes', ['kbReleaseNotes']],
663
+ [
664
+ 'Sources',
665
+ [
666
+ 'KnowledgeBase'
667
+ ]
668
+ ],
669
+ [
670
+ 'ContentTypes',
671
+ [
672
+ 'kbReleaseNotes'
673
+ ]
674
+ ]
413
675
  ]);
414
676
  const result = createSelectionsModel(filters, selected);
415
677
  expect(result).toBeInstanceOf(Models.Selections);
@@ -418,4 +680,5 @@ describe('[model-utils] createSelectionsModel', () => {
418
680
  });
419
681
  });
420
682
  });
683
+
421
684
  //# sourceMappingURL=model-utils.test.js.map