@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,33 +1,34 @@
1
1
  import { expect } from '@jest/globals';
2
2
  import { Models, ModelsMocks } from '../../api-client';
3
3
  import { FilterStore } from '../filter.store';
4
- describe('[FilterStore]', () => {
4
+ describe('[FilterStore]', ()=>{
5
5
  let store;
6
- const validateFilters = (key, subOptionsLength) => {
7
- var _a, _b;
8
- const filter = store.filters.find(f => f.key === key);
9
- expect((_b = (_a = filter === null || filter === void 0 ? void 0 : filter.subOptions) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0).toEqual(subOptionsLength);
6
+ const validateFilters = (key, subOptionsLength)=>{
7
+ var _ref;
8
+ var _filter_subOptions;
9
+ const filter = store.filters.find((f)=>f.key === key);
10
+ expect((_ref = filter === null || filter === void 0 ? void 0 : (_filter_subOptions = filter.subOptions) === null || _filter_subOptions === void 0 ? void 0 : _filter_subOptions.length) !== null && _ref !== void 0 ? _ref : 0).toEqual(subOptionsLength);
10
11
  };
11
- const validateSelected = (key, expected) => {
12
+ const validateSelected = (key, expected)=>{
12
13
  if (!expected) {
13
14
  expect(store.selected.get(key)).toBeUndefined();
14
15
  }
15
16
  expect(store.selected.get(key)).toEqual(expected);
16
17
  };
17
- beforeEach(() => {
18
+ beforeEach(()=>{
18
19
  store = new FilterStore();
19
20
  });
20
- afterEach(() => {
21
+ afterEach(()=>{
21
22
  jest.clearAllMocks();
22
23
  });
23
- test('should validate defaults', () => {
24
+ test('should validate defaults', ()=>{
24
25
  expect(Object.keys(store.filters).length).toEqual(0);
25
26
  expect(store.selected.size).toEqual(0);
26
27
  });
27
- test('Should initialize properly', () => {
28
+ test('Should initialize properly', ()=>{
28
29
  store.initFilters(ModelsMocks.mockFrontendModel());
29
30
  expect(store.filters.length).toEqual(3);
30
- const checkFilter = (idx, key, type, subOptionsLength) => {
31
+ const checkFilter = (idx, key, type, subOptionsLength)=>{
31
32
  expect(store.filters[idx].key).toEqual(key);
32
33
  expect(store.filters[idx].type).toEqual(type);
33
34
  expect(store.filters[idx].subOptions.length).toEqual(subOptionsLength);
@@ -43,49 +44,66 @@ describe('[FilterStore]', () => {
43
44
  expect(optionKnowledgeBase.type).toEqual(Models.OptionType.Selectable);
44
45
  expect(optionKnowledgeBase.subOptions.length).toEqual(0);
45
46
  });
46
- test('Should fail when selecting option from non-existing filter', () => {
47
+ test('Should fail when selecting option from non-existing filter', ()=>{
47
48
  store.initFilters(ModelsMocks.mockFrontendModel());
48
- expect(() => store.selectOption('non-existing', 'subFilter1')).toThrow('Filter with key "non-existing" does not exist.');
49
+ expect(()=>store.selectOption('non-existing', 'subFilter1')).toThrow('Filter with key "non-existing" does not exist.');
49
50
  });
50
- test('Should fail when selecting non-existing option from existing filter', () => {
51
+ test('Should fail when selecting non-existing option from existing filter', ()=>{
51
52
  store.initFilters(ModelsMocks.mockFrontendModel());
52
- expect(() => store.selectOption('Sources', 'non-existing-option')).toThrow('Option with key \"non-existing-option\" does not exist in filter \"Sources\".');
53
+ expect(()=>store.selectOption('Sources', 'non-existing-option')).toThrow('Option with key \"non-existing-option\" does not exist in filter \"Sources\".');
53
54
  });
54
- test('Should select value', () => {
55
+ test('Should select value', ()=>{
55
56
  store.initFilters(ModelsMocks.mockFrontendModel());
56
57
  expect(store.filters.length).toEqual(3);
57
58
  // Source filter: select Jarvis option: 1 filter + 1 subfilter
58
59
  store.selectOption('Sources', 'Jarvis');
59
- validateSelected('Sources', ['Jarvis']);
60
+ validateSelected('Sources', [
61
+ 'Jarvis'
62
+ ]);
60
63
  expect(store.filters.length).toEqual(3);
61
64
  expect(store.filters[0].key).toEqual('Sources');
62
65
  expect(store.filters[1].key).toEqual('ContentTypes');
63
66
  expect(store.filters[2].key).toEqual('ProductAreas');
64
67
  // Source filter: select knowledgeBase option (options with the same key are merged)
65
68
  store.selectOption('Sources', 'KnowledgeBase');
66
- validateSelected('Sources', ['Jarvis', 'KnowledgeBase']);
69
+ validateSelected('Sources', [
70
+ 'Jarvis',
71
+ 'KnowledgeBase'
72
+ ]);
67
73
  expect(store.filters.length).toEqual(3);
68
74
  expect(store.filters[0].key).toEqual('Sources');
69
75
  expect(store.filters[1].key).toEqual('ContentTypes');
70
- expect(store.filters[1].subOptions.map(o => o.key)).toEqual([
76
+ expect(store.filters[1].subOptions.map((o)=>o.key)).toEqual([
71
77
  'kbReleaseNotes',
72
78
  'kbFaq',
73
79
  'kbHowTo',
74
80
  'xxx',
75
- 'yyy',
81
+ 'yyy'
76
82
  ]);
77
83
  store.selectOption('ContentTypes', 'kbReleaseNotes');
78
84
  expect(store.filters.length).toEqual(3);
79
- validateSelected('Sources', ['Jarvis', 'KnowledgeBase']);
80
- validateSelected('ContentTypes', ['kbReleaseNotes']);
85
+ validateSelected('Sources', [
86
+ 'Jarvis',
87
+ 'KnowledgeBase'
88
+ ]);
89
+ validateSelected('ContentTypes', [
90
+ 'kbReleaseNotes'
91
+ ]);
81
92
  validateSelected('ProductAreas');
82
93
  store.selectOption('ProductAreas', 'Call Booking');
83
94
  expect(store.filters.length).toEqual(3);
84
- validateSelected('Sources', ['Jarvis', 'KnowledgeBase']);
85
- validateSelected('ContentTypes', ['kbReleaseNotes']);
86
- validateSelected('ProductAreas', ['Call Booking']);
95
+ validateSelected('Sources', [
96
+ 'Jarvis',
97
+ 'KnowledgeBase'
98
+ ]);
99
+ validateSelected('ContentTypes', [
100
+ 'kbReleaseNotes'
101
+ ]);
102
+ validateSelected('ProductAreas', [
103
+ 'Call Booking'
104
+ ]);
87
105
  });
88
- test('Should deselect value', () => {
106
+ test('Should deselect value', ()=>{
89
107
  store.initFilters(ModelsMocks.mockFrontendModel());
90
108
  store.selectOption('Sources', 'KnowledgeBase');
91
109
  store.selectOption('Sources', 'Jarvis');
@@ -98,41 +116,75 @@ describe('[FilterStore]', () => {
98
116
  validateFilters('Sources', 2);
99
117
  validateFilters('ContentTypes', 5);
100
118
  validateFilters('ProductAreas', 3);
101
- validateSelected('Sources', ['KnowledgeBase', 'Jarvis']);
102
- validateSelected('ContentTypes', ['kbReleaseNotes', 'yyy', 'kbHowTo']);
103
- validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
119
+ validateSelected('Sources', [
120
+ 'KnowledgeBase',
121
+ 'Jarvis'
122
+ ]);
123
+ validateSelected('ContentTypes', [
124
+ 'kbReleaseNotes',
125
+ 'yyy',
126
+ 'kbHowTo'
127
+ ]);
128
+ validateSelected('ProductAreas', [
129
+ 'Marketing',
130
+ 'Marketing Pro'
131
+ ]);
104
132
  store.deselectOption('Sources', 'Jarvis');
105
133
  expect(store.filters.length).toEqual(3);
106
134
  validateFilters('Sources', 2);
107
135
  validateFilters('ContentTypes', 5);
108
136
  validateFilters('ProductAreas', 3);
109
- validateSelected('Sources', ['KnowledgeBase']);
110
- validateSelected('ContentTypes', ['kbReleaseNotes', 'kbHowTo']);
111
- validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
137
+ validateSelected('Sources', [
138
+ 'KnowledgeBase'
139
+ ]);
140
+ validateSelected('ContentTypes', [
141
+ 'kbReleaseNotes',
142
+ 'kbHowTo'
143
+ ]);
144
+ validateSelected('ProductAreas', [
145
+ 'Marketing',
146
+ 'Marketing Pro'
147
+ ]);
112
148
  store.deselectOption('ContentTypes', 'kbHowTo');
113
149
  expect(store.filters.length).toEqual(3);
114
150
  validateFilters('Sources', 2);
115
151
  validateFilters('ContentTypes', 5);
116
152
  validateFilters('ProductAreas', 3);
117
- validateSelected('Sources', ['KnowledgeBase']);
118
- validateSelected('ContentTypes', ['kbReleaseNotes']);
119
- validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
153
+ validateSelected('Sources', [
154
+ 'KnowledgeBase'
155
+ ]);
156
+ validateSelected('ContentTypes', [
157
+ 'kbReleaseNotes'
158
+ ]);
159
+ validateSelected('ProductAreas', [
160
+ 'Marketing',
161
+ 'Marketing Pro'
162
+ ]);
120
163
  store.deselectOption('ContentTypes', 'kbReleaseNotes');
121
164
  expect(store.filters.length).toEqual(3);
122
165
  validateFilters('Sources', 2);
123
166
  validateFilters('ContentTypes', 5);
124
167
  validateFilters('ProductAreas', 3);
125
- validateSelected('Sources', ['KnowledgeBase']);
168
+ validateSelected('Sources', [
169
+ 'KnowledgeBase'
170
+ ]);
126
171
  validateSelected('ContentTypes', []);
127
- validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
172
+ validateSelected('ProductAreas', [
173
+ 'Marketing',
174
+ 'Marketing Pro'
175
+ ]);
128
176
  store.deselectOption('ProductAreas', 'Marketing Pro');
129
177
  expect(store.filters.length).toEqual(3);
130
178
  validateFilters('Sources', 2);
131
179
  validateFilters('ContentTypes', 5);
132
180
  validateFilters('ProductAreas', 3);
133
- validateSelected('Sources', ['KnowledgeBase']);
181
+ validateSelected('Sources', [
182
+ 'KnowledgeBase'
183
+ ]);
134
184
  validateSelected('ContentTypes', []);
135
- validateSelected('ProductAreas', ['Marketing']);
185
+ validateSelected('ProductAreas', [
186
+ 'Marketing'
187
+ ]);
136
188
  store.deselectOption('Sources', 'KnowledgeBase');
137
189
  expect(store.filters.length).toEqual(3);
138
190
  validateFilters('Sources', 2);
@@ -142,7 +194,7 @@ describe('[FilterStore]', () => {
142
194
  validateSelected('ContentTypes', []);
143
195
  validateSelected('ProductAreas', []);
144
196
  });
145
- test('Should deselect value 2', () => {
197
+ test('Should deselect value 2', ()=>{
146
198
  store.initFilters(ModelsMocks.mockFrontendModel());
147
199
  store.selectOption('Sources', 'KnowledgeBase');
148
200
  validateFilters('Sources', 2);
@@ -162,7 +214,7 @@ describe('[FilterStore]', () => {
162
214
  validateFilters('ContentTypes', 5);
163
215
  validateFilters('ProductAreas', 3);
164
216
  });
165
- test('should deselect from flat structure', () => {
217
+ test('should deselect from flat structure', ()=>{
166
218
  store.initFilters(ModelsMocks.mockFrontendModelFlat());
167
219
  // Should render all 3 filters at once because they are not nested
168
220
  validateFilters('Sources', 2);
@@ -179,19 +231,32 @@ describe('[FilterStore]', () => {
179
231
  validateFilters('ContentTypes', 5);
180
232
  validateFilters('ProductAreas', 3);
181
233
  });
182
- test('Should select all', () => {
234
+ test('Should select all', ()=>{
183
235
  store.initFilters(ModelsMocks.mockFrontendModel());
184
236
  store.selectAll('Sources');
185
237
  store.selectAll('ProductAreas');
186
238
  store.selectAll('ContentTypes');
187
- validateSelected('Sources', ['KnowledgeBase', 'Jarvis']);
188
- validateSelected('ContentTypes', ['kbReleaseNotes', 'kbFaq', 'kbHowTo', 'xxx', 'yyy']);
189
- validateSelected('ProductAreas', ['Call Booking', 'Marketing', 'Marketing Pro']);
239
+ validateSelected('Sources', [
240
+ 'KnowledgeBase',
241
+ 'Jarvis'
242
+ ]);
243
+ validateSelected('ContentTypes', [
244
+ 'kbReleaseNotes',
245
+ 'kbFaq',
246
+ 'kbHowTo',
247
+ 'xxx',
248
+ 'yyy'
249
+ ]);
250
+ validateSelected('ProductAreas', [
251
+ 'Call Booking',
252
+ 'Marketing',
253
+ 'Marketing Pro'
254
+ ]);
190
255
  validateFilters('Sources', 2);
191
256
  validateFilters('ContentTypes', 5);
192
257
  validateFilters('ProductAreas', 3);
193
258
  });
194
- test('Should deselect all', () => {
259
+ test('Should deselect all', ()=>{
195
260
  store.initFilters(ModelsMocks.mockFrontendModel());
196
261
  store.selectAll('Sources');
197
262
  store.selectAll('ContentTypes');
@@ -206,14 +271,14 @@ describe('[FilterStore]', () => {
206
271
  validateFilters('ContentTypes', 5);
207
272
  validateFilters('ProductAreas', 3);
208
273
  });
209
- test('should getFilterLabel', () => {
274
+ test('should getFilterLabel', ()=>{
210
275
  expect(store.getFilterLabel('')).toEqual('');
211
276
  expect(store.getFilterLabel('a aaa')).toEqual('A aaa');
212
277
  expect(store.getFilterLabel('FAQ')).toEqual('FAQ');
213
278
  expect(store.getFilterLabel('contentTypes')).toEqual('Content Types');
214
279
  expect(store.getFilterLabel('content Types')).toEqual('Content Types');
215
280
  });
216
- test('should export', () => {
281
+ test('should export', ()=>{
217
282
  store.initFilters(ModelsMocks.mockFrontendModel());
218
283
  store.selectOption('Sources', 'KnowledgeBase');
219
284
  store.selectOption('Sources', 'Jarvis');
@@ -226,48 +291,62 @@ describe('[FilterStore]', () => {
226
291
  expect(exported).toEqual({
227
292
  subOptions: {
228
293
  Sources: {
229
- values: ['KnowledgeBase', 'Jarvis'],
294
+ values: [
295
+ 'KnowledgeBase',
296
+ 'Jarvis'
297
+ ],
230
298
  subOptions: {
231
299
  KnowledgeBase: {
232
300
  subOptions: {
233
301
  ContentTypes: {
234
- values: ['kbReleaseNotes', 'kbHowTo'],
302
+ values: [
303
+ 'kbReleaseNotes',
304
+ 'kbHowTo'
305
+ ]
235
306
  },
236
307
  ProductAreas: {
237
- values: ['Marketing', 'Marketing Pro'],
238
- },
239
- },
308
+ values: [
309
+ 'Marketing',
310
+ 'Marketing Pro'
311
+ ]
312
+ }
313
+ }
240
314
  },
241
315
  Jarvis: {
242
316
  subOptions: {
243
317
  ContentTypes: {
244
- values: ['kbReleaseNotes', 'yyy'],
245
- },
246
- },
247
- },
248
- },
249
- },
250
- },
318
+ values: [
319
+ 'kbReleaseNotes',
320
+ 'yyy'
321
+ ]
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ }
251
328
  });
252
329
  });
253
- test('should export 2', () => {
330
+ test('should export 2', ()=>{
254
331
  store.initFilters(ModelsMocks.mockFrontendModel());
255
332
  const exported = store.export();
256
333
  expect(exported).toBeUndefined();
257
334
  });
258
- test('should export 3', () => {
335
+ test('should export 3', ()=>{
259
336
  store.initFilters(ModelsMocks.mockFrontendModel());
260
337
  store.selectOption('Sources', 'KnowledgeBase');
261
338
  const exported = store.export();
262
339
  expect(exported).toEqual({
263
340
  subOptions: {
264
341
  Sources: {
265
- values: ['KnowledgeBase'],
266
- },
267
- },
342
+ values: [
343
+ 'KnowledgeBase'
344
+ ]
345
+ }
346
+ }
268
347
  });
269
348
  });
270
- test('should export 4', () => {
349
+ test('should export 4', ()=>{
271
350
  store.initFilters(ModelsMocks.mockFrontendModel());
272
351
  store.selectOption('Sources', 'KnowledgeBase');
273
352
  store.selectOption('ProductAreas', 'Marketing');
@@ -277,21 +356,25 @@ describe('[FilterStore]', () => {
277
356
  expect(exported).toEqual({
278
357
  subOptions: {
279
358
  Sources: {
280
- values: ['KnowledgeBase'],
359
+ values: [
360
+ 'KnowledgeBase'
361
+ ],
281
362
  subOptions: {
282
363
  KnowledgeBase: {
283
364
  subOptions: {
284
365
  ProductAreas: {
285
- values: ['Marketing'],
286
- },
287
- },
288
- },
289
- },
290
- },
291
- },
366
+ values: [
367
+ 'Marketing'
368
+ ]
369
+ }
370
+ }
371
+ }
372
+ }
373
+ }
374
+ }
292
375
  });
293
376
  });
294
- test('should export 5', () => {
377
+ test('should export 5', ()=>{
295
378
  store.initFilters(ModelsMocks.mockFrontendModel());
296
379
  store.selectOption('Sources', 'KnowledgeBase');
297
380
  store.selectOption('Sources', 'Jarvis');
@@ -300,65 +383,98 @@ describe('[FilterStore]', () => {
300
383
  expect(exported).toEqual({
301
384
  subOptions: {
302
385
  Sources: {
303
- values: ['KnowledgeBase', 'Jarvis'],
386
+ values: [
387
+ 'KnowledgeBase',
388
+ 'Jarvis'
389
+ ],
304
390
  subOptions: {
305
391
  KnowledgeBase: {
306
392
  subOptions: {
307
393
  ContentTypes: {
308
- values: ['kbReleaseNotes'],
309
- },
310
- },
394
+ values: [
395
+ 'kbReleaseNotes'
396
+ ]
397
+ }
398
+ }
311
399
  },
312
400
  Jarvis: {
313
401
  subOptions: {
314
402
  ContentTypes: {
315
- values: ['kbReleaseNotes'],
316
- },
317
- },
318
- },
319
- },
320
- },
321
- },
403
+ values: [
404
+ 'kbReleaseNotes'
405
+ ]
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ }
322
412
  });
323
413
  });
324
- test('should export 6', () => {
414
+ test('should export 6', ()=>{
325
415
  const exported = store.export();
326
416
  expect(exported).toBeUndefined();
327
417
  });
328
- test('should detect disabled options', () => {
329
- const checkDisabled = (disabledArray) => {
330
- const keys = ['kbFaq', 'kbReleaseNotes', 'kbHowTo', 'xxx', 'yyy'];
331
- keys.forEach((key, index) => {
418
+ test('should detect disabled options', ()=>{
419
+ const checkDisabled = (disabledArray)=>{
420
+ const keys = [
421
+ 'kbFaq',
422
+ 'kbReleaseNotes',
423
+ 'kbHowTo',
424
+ 'xxx',
425
+ 'yyy'
426
+ ];
427
+ keys.forEach((key, index)=>{
332
428
  expect(store.isOptionDisabled('ContentTypes', key)).toBe(disabledArray[index]);
333
429
  });
334
430
  };
335
431
  store.initFilters(ModelsMocks.mockFrontendModel());
336
- checkDisabled([true, true, true, true, true]);
432
+ checkDisabled([
433
+ true,
434
+ true,
435
+ true,
436
+ true,
437
+ true
438
+ ]);
337
439
  store.selectOption('Sources', 'KnowledgeBase');
338
- checkDisabled([false, false, false, true, true]);
440
+ checkDisabled([
441
+ false,
442
+ false,
443
+ false,
444
+ true,
445
+ true
446
+ ]);
339
447
  store.selectOption('Sources', 'Jarvis');
340
- checkDisabled([false, false, false, false, false]);
448
+ checkDisabled([
449
+ false,
450
+ false,
451
+ false,
452
+ false,
453
+ false
454
+ ]);
341
455
  });
342
- describe('isDefaultSelected customization', () => {
343
- test('should not select any options by default when isDefaultSelected is not provided', () => {
456
+ describe('isDefaultSelected customization', ()=>{
457
+ test('should not select any options by default when isDefaultSelected is not provided', ()=>{
344
458
  store.initFilters(ModelsMocks.mockFrontendModel());
345
459
  expect(store.selected.get('Sources')).toBeUndefined();
346
460
  expect(store.selected.get('ContentTypes')).toBeUndefined();
347
461
  expect(store.selected.get('ProductAreas')).toBeUndefined();
348
462
  });
349
- test('should select options where isDefaultSelected returns true', () => {
463
+ test('should select options where isDefaultSelected returns true', ()=>{
350
464
  store.initFilters(ModelsMocks.mockFrontendModel(), {
351
- isDefaultSelected: (filterKey, optionKey) => {
465
+ isDefaultSelected: (filterKey, optionKey)=>{
352
466
  return filterKey === 'Sources' && optionKey === 'KnowledgeBase';
353
- },
467
+ }
354
468
  });
355
- expect(store.selected.get('Sources')).toEqual(['KnowledgeBase']);
469
+ expect(store.selected.get('Sources')).toEqual([
470
+ 'KnowledgeBase'
471
+ ]);
356
472
  expect(store.selected.get('ContentTypes')).toBeUndefined();
357
473
  expect(store.selected.get('ProductAreas')).toBeUndefined();
358
474
  });
359
- test('should select multiple options across filters when isDefaultSelected returns true', () => {
475
+ test('should select multiple options across filters when isDefaultSelected returns true', ()=>{
360
476
  store.initFilters(ModelsMocks.mockFrontendModel(), {
361
- isDefaultSelected: (filterKey, optionKey) => {
477
+ isDefaultSelected: (filterKey, optionKey)=>{
362
478
  if (filterKey === 'Sources') {
363
479
  return true; // Select all sources
364
480
  }
@@ -366,48 +482,59 @@ describe('[FilterStore]', () => {
366
482
  return true;
367
483
  }
368
484
  return false;
369
- },
485
+ }
370
486
  });
371
- expect(store.selected.get('Sources')).toEqual(['KnowledgeBase', 'Jarvis']);
487
+ expect(store.selected.get('Sources')).toEqual([
488
+ 'KnowledgeBase',
489
+ 'Jarvis'
490
+ ]);
372
491
  expect(store.selected.get('ContentTypes')).toBeUndefined();
373
- expect(store.selected.get('ProductAreas')).toEqual(['Marketing']);
492
+ expect(store.selected.get('ProductAreas')).toEqual([
493
+ 'Marketing'
494
+ ]);
374
495
  });
375
- test('should not select any options when isDefaultSelected always returns false', () => {
496
+ test('should not select any options when isDefaultSelected always returns false', ()=>{
376
497
  store.initFilters(ModelsMocks.mockFrontendModel(), {
377
- isDefaultSelected: () => false,
498
+ isDefaultSelected: ()=>false
378
499
  });
379
500
  expect(store.selected.get('Sources')).toBeUndefined();
380
501
  expect(store.selected.get('ContentTypes')).toBeUndefined();
381
502
  expect(store.selected.get('ProductAreas')).toBeUndefined();
382
503
  });
383
- test('should select all options when isDefaultSelected always returns true', () => {
504
+ test('should select all options when isDefaultSelected always returns true', ()=>{
384
505
  store.initFilters(ModelsMocks.mockFrontendModel(), {
385
- isDefaultSelected: () => true,
506
+ isDefaultSelected: ()=>true
386
507
  });
387
- expect(store.selected.get('Sources')).toEqual(['KnowledgeBase', 'Jarvis']);
508
+ expect(store.selected.get('Sources')).toEqual([
509
+ 'KnowledgeBase',
510
+ 'Jarvis'
511
+ ]);
388
512
  expect(store.selected.get('ContentTypes')).toEqual([
389
513
  'kbReleaseNotes',
390
514
  'kbFaq',
391
515
  'kbHowTo',
392
516
  'xxx',
393
- 'yyy',
517
+ 'yyy'
394
518
  ]);
395
519
  expect(store.selected.get('ProductAreas')).toEqual([
396
520
  'Call Booking',
397
521
  'Marketing',
398
- 'Marketing Pro',
522
+ 'Marketing Pro'
399
523
  ]);
400
524
  });
401
- test('should work with flat filter structure', () => {
525
+ test('should work with flat filter structure', ()=>{
402
526
  store.initFilters(ModelsMocks.mockFrontendModelFlat(), {
403
- isDefaultSelected: (filterKey, optionKey) => {
527
+ isDefaultSelected: (filterKey, optionKey)=>{
404
528
  return filterKey === 'ContentTypes' && optionKey === 'kbFaq';
405
- },
529
+ }
406
530
  });
407
531
  expect(store.selected.get('Sources')).toBeUndefined();
408
- expect(store.selected.get('ContentTypes')).toEqual(['kbFaq']);
532
+ expect(store.selected.get('ContentTypes')).toEqual([
533
+ 'kbFaq'
534
+ ]);
409
535
  expect(store.selected.get('ProductAreas')).toBeUndefined();
410
536
  });
411
537
  });
412
538
  });
539
+
413
540
  //# sourceMappingURL=filter.store.test.js.map