@servicetitan/titan-chatbot-api 7.1.1 → 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.
- package/CHANGELOG.md +25 -0
- package/dist/api-client/__mocks__/chatbot-api-client.mock.js +21 -47
- package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -1
- package/dist/api-client/base/chatbot-api-client.js +3 -4
- package/dist/api-client/base/chatbot-api-client.js.map +1 -1
- package/dist/api-client/help-center/__tests__/converter-from-models.test.js +48 -15
- package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +1 -1
- package/dist/api-client/help-center/__tests__/converter-to-models.test.js +23 -22
- package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +1 -1
- package/dist/api-client/help-center/chatbot-api-client.js +51 -52
- package/dist/api-client/help-center/chatbot-api-client.js.map +1 -1
- package/dist/api-client/help-center/converter-from-models.js +15 -12
- package/dist/api-client/help-center/converter-from-models.js.map +1 -1
- package/dist/api-client/help-center/converter-to-models.js +29 -26
- package/dist/api-client/help-center/converter-to-models.js.map +1 -1
- package/dist/api-client/help-center/index.d.ts +2 -1
- package/dist/api-client/help-center/index.d.ts.map +1 -1
- package/dist/api-client/help-center/index.js +1 -0
- package/dist/api-client/help-center/index.js.map +1 -1
- package/dist/api-client/help-center/native-client.js +1192 -2884
- package/dist/api-client/help-center/native-client.js.map +1 -1
- package/dist/api-client/index.d.ts +2 -1
- package/dist/api-client/index.d.ts.map +1 -1
- package/dist/api-client/index.js +14 -7
- package/dist/api-client/index.js.map +1 -1
- package/dist/api-client/models/__mocks__/models.mock.js +154 -124
- package/dist/api-client/models/__mocks__/models.mock.js.map +1 -1
- package/dist/api-client/models/index.d.ts +2 -1
- package/dist/api-client/models/index.d.ts.map +1 -1
- package/dist/api-client/models/index.js +8 -7
- package/dist/api-client/models/index.js.map +1 -1
- package/dist/api-client/titan-chat/__tests__/native-client.test.js +6 -6
- package/dist/api-client/titan-chat/__tests__/native-client.test.js.map +1 -1
- package/dist/api-client/titan-chat/chatbot-api-client.js +40 -35
- package/dist/api-client/titan-chat/chatbot-api-client.js.map +1 -1
- package/dist/api-client/titan-chat/index.d.ts +2 -1
- package/dist/api-client/titan-chat/index.d.ts.map +1 -1
- package/dist/api-client/titan-chat/index.js +1 -0
- package/dist/api-client/titan-chat/index.js.map +1 -1
- package/dist/api-client/titan-chat/native-client.d.ts +14 -14
- package/dist/api-client/titan-chat/native-client.d.ts.map +1 -1
- package/dist/api-client/titan-chat/native-client.js +359 -809
- package/dist/api-client/titan-chat/native-client.js.map +1 -1
- package/dist/api-client/utils/__tests__/model-utils.test.js +454 -191
- package/dist/api-client/utils/__tests__/model-utils.test.js.map +1 -1
- package/dist/api-client/utils/model-utils.d.ts.map +1 -1
- package/dist/api-client/utils/model-utils.js +28 -25
- package/dist/api-client/utils/model-utils.js.map +1 -1
- package/dist/hooks/use-customization-chatbot.js +2 -1
- package/dist/hooks/use-customization-chatbot.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/models/chatbot-customizations.js +2 -1
- package/dist/models/chatbot-customizations.js.map +1 -1
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -1
- package/dist/models/index.js.map +1 -1
- package/dist/stores/__tests__/chatbot-ui-backend.store.test.js +267 -172
- package/dist/stores/__tests__/chatbot-ui-backend.store.test.js.map +1 -1
- package/dist/stores/__tests__/chatbot-ui.store.test.js +61 -64
- package/dist/stores/__tests__/chatbot-ui.store.test.js.map +1 -1
- package/dist/stores/__tests__/filter.store.test.js +243 -116
- package/dist/stores/__tests__/filter.store.test.js.map +1 -1
- package/dist/stores/__tests__/initialize.store.test.js +9 -8
- package/dist/stores/__tests__/initialize.store.test.js.map +1 -1
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.js +8 -7
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.js.map +1 -1
- package/dist/stores/__tests__/message-feedback.store.test.js +34 -27
- package/dist/stores/__tests__/message-feedback.store.test.js.map +1 -1
- package/dist/stores/__tests__/session-feedback.store.test.js +9 -8
- package/dist/stores/__tests__/session-feedback.store.test.js.map +1 -1
- package/dist/stores/chatbot-ui-backend.store.js +171 -240
- package/dist/stores/chatbot-ui-backend.store.js.map +1 -1
- package/dist/stores/chatbot-ui.store.js +73 -46
- package/dist/stores/chatbot-ui.store.js.map +1 -1
- package/dist/stores/filter.store.js +298 -378
- package/dist/stores/filter.store.js.map +1 -1
- package/dist/stores/index.d.ts +5 -3
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +3 -2
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/initialize.store.js +55 -51
- package/dist/stores/initialize.store.js.map +1 -1
- package/dist/stores/message-feedback-base.store.js +2 -1
- package/dist/stores/message-feedback-base.store.js.map +1 -1
- package/dist/stores/message-feedback-guardrail.store.js +50 -47
- package/dist/stores/message-feedback-guardrail.store.js.map +1 -1
- package/dist/stores/message-feedback.store.js +84 -89
- package/dist/stores/message-feedback.store.js.map +1 -1
- package/dist/stores/session-feedback.store.js +46 -39
- package/dist/stores/session-feedback.store.js.map +1 -1
- package/dist/utils/__tests__/axios-utils.test.js +8 -7
- package/dist/utils/__tests__/axios-utils.test.js.map +1 -1
- package/dist/utils/axios-utils.js +9 -7
- package/dist/utils/axios-utils.js.map +1 -1
- package/dist/utils/test-utils.js +5 -5
- package/dist/utils/test-utils.js.map +1 -1
- package/package.json +3 -3
- package/src/api-client/help-center/index.ts +2 -1
- package/src/api-client/help-center/native-client.ts +4 -4
- package/src/api-client/index.ts +2 -6
- package/src/api-client/models/index.ts +15 -13
- package/src/api-client/titan-chat/index.ts +2 -1
- package/src/api-client/titan-chat/native-client.ts +17 -14
- package/src/api-client/utils/model-utils.ts +4 -8
- package/src/index.ts +1 -1
- package/src/models/index.ts +1 -1
- package/src/stores/index.ts +5 -12
- 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 = [
|
|
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 = [
|
|
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 = [
|
|
29
|
+
const filters = [
|
|
30
|
+
frontendModel.options
|
|
31
|
+
];
|
|
26
32
|
const selected = new Map([
|
|
27
|
-
[
|
|
28
|
-
|
|
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
|
|
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 = (
|
|
39
|
-
const selected = new Map([
|
|
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: [
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
values: [
|
|
64
|
+
'kbReleaseNotes'
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
47
68
|
});
|
|
48
69
|
});
|
|
49
|
-
test('top level, single filter, multiple values', ()
|
|
50
|
-
var
|
|
70
|
+
test('top level, single filter, multiple values', ()=>{
|
|
71
|
+
var _flatModel_options_subOptions;
|
|
51
72
|
const flatModel = ModelsMocks.mockFrontendModelFlat();
|
|
52
|
-
const flatFilters = (
|
|
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
|
-
[
|
|
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: [
|
|
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
|
|
97
|
+
test('top level, multiple filter, multiple values', ()=>{
|
|
98
|
+
var _flatModel_options_subOptions;
|
|
67
99
|
const flatModel = ModelsMocks.mockFrontendModelFlat();
|
|
68
|
-
const flatFilters = (
|
|
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
|
-
[
|
|
71
|
-
|
|
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: [
|
|
120
|
+
values: [
|
|
121
|
+
'kbReleaseNotes',
|
|
122
|
+
'kbFaq'
|
|
123
|
+
]
|
|
78
124
|
},
|
|
79
125
|
ProductAreas: {
|
|
80
|
-
values: [
|
|
81
|
-
|
|
82
|
-
|
|
126
|
+
values: [
|
|
127
|
+
'Marketing'
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
83
131
|
});
|
|
84
132
|
});
|
|
85
|
-
test('non-existing filter', ()
|
|
86
|
-
var
|
|
133
|
+
test('non-existing filter', ()=>{
|
|
134
|
+
var _flatModel_options_subOptions;
|
|
87
135
|
const flatModel = ModelsMocks.mockFrontendModelFlat();
|
|
88
|
-
const flatFilters = (
|
|
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
|
-
[
|
|
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: [
|
|
97
|
-
|
|
98
|
-
|
|
150
|
+
values: [
|
|
151
|
+
'kbReleaseNotes'
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
99
155
|
});
|
|
100
156
|
});
|
|
101
|
-
test('no valid filters', ()
|
|
102
|
-
var
|
|
157
|
+
test('no valid filters', ()=>{
|
|
158
|
+
var _flatModel_options_subOptions;
|
|
103
159
|
const flatModel = ModelsMocks.mockFrontendModelFlat();
|
|
104
|
-
const flatFilters = (
|
|
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
|
-
[
|
|
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
|
|
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 = (
|
|
117
|
-
const selected = new Map([
|
|
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: [
|
|
123
|
-
|
|
124
|
-
|
|
191
|
+
values: [
|
|
192
|
+
'Jarvis'
|
|
193
|
+
]
|
|
194
|
+
}
|
|
195
|
+
}
|
|
125
196
|
});
|
|
126
197
|
});
|
|
127
|
-
test('top level, multiple filters, single value', ()
|
|
128
|
-
var
|
|
198
|
+
test('top level, multiple filters, single value', ()=>{
|
|
199
|
+
var _frontendModel_options_subOptions;
|
|
129
200
|
const frontendModel = ModelsMocks.mockFrontendModelMixed();
|
|
130
|
-
const filters = (
|
|
131
|
-
const selected = new Map([
|
|
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: [
|
|
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
|
|
223
|
+
test('all levels, multiple filters, multiple values', ()=>{
|
|
224
|
+
var _frontendModel_options_subOptions;
|
|
143
225
|
const frontendModel = ModelsMocks.mockFrontendModelMixed();
|
|
144
|
-
const filters = (
|
|
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
|
-
[
|
|
147
|
-
|
|
148
|
-
|
|
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: [
|
|
252
|
+
values: [
|
|
253
|
+
'KnowledgeBase',
|
|
254
|
+
'Jarvis'
|
|
255
|
+
],
|
|
155
256
|
subOptions: {
|
|
156
257
|
KnowledgeBase: {
|
|
157
258
|
subOptions: {
|
|
158
259
|
ContentTypes: {
|
|
159
|
-
values: [
|
|
260
|
+
values: [
|
|
261
|
+
'kbReleaseNotes'
|
|
262
|
+
]
|
|
160
263
|
},
|
|
161
264
|
ProductAreas: {
|
|
162
|
-
values: [
|
|
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
|
|
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 = (
|
|
177
|
-
const selected = new Map([
|
|
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: [
|
|
183
|
-
|
|
184
|
-
|
|
294
|
+
values: [
|
|
295
|
+
'KnowledgeBase'
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
}
|
|
185
299
|
});
|
|
186
300
|
});
|
|
187
|
-
test('all levels, multiple filters, single value', ()
|
|
188
|
-
var
|
|
301
|
+
test('all levels, multiple filters, single value', ()=>{
|
|
302
|
+
var _frontendModel_options_subOptions;
|
|
189
303
|
const frontendModel = ModelsMocks.mockFrontendModel();
|
|
190
|
-
const filters = (
|
|
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
|
-
[
|
|
193
|
-
|
|
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: [
|
|
323
|
+
values: [
|
|
324
|
+
'KnowledgeBase'
|
|
325
|
+
],
|
|
200
326
|
subOptions: {
|
|
201
327
|
KnowledgeBase: {
|
|
202
328
|
subOptions: {
|
|
203
329
|
ContentTypes: {
|
|
204
|
-
values: [
|
|
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
|
|
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 = (
|
|
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
|
-
[
|
|
219
|
-
|
|
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: [
|
|
364
|
+
values: [
|
|
365
|
+
'KnowledgeBase',
|
|
366
|
+
'Jarvis'
|
|
367
|
+
],
|
|
226
368
|
subOptions: {
|
|
227
369
|
KnowledgeBase: {
|
|
228
370
|
subOptions: {
|
|
229
371
|
ContentTypes: {
|
|
230
|
-
values: [
|
|
231
|
-
|
|
232
|
-
|
|
372
|
+
values: [
|
|
373
|
+
'kbReleaseNotes'
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
}
|
|
233
377
|
},
|
|
234
378
|
Jarvis: {
|
|
235
379
|
subOptions: {
|
|
236
380
|
ContentTypes: {
|
|
237
|
-
values: [
|
|
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
|
|
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 = (
|
|
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
|
-
[
|
|
252
|
-
|
|
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: [
|
|
417
|
+
values: [
|
|
418
|
+
'KnowledgeBase',
|
|
419
|
+
'Jarvis'
|
|
420
|
+
],
|
|
259
421
|
subOptions: {
|
|
260
422
|
KnowledgeBase: {
|
|
261
423
|
subOptions: {
|
|
262
424
|
ContentTypes: {
|
|
263
|
-
values: [
|
|
264
|
-
|
|
265
|
-
|
|
425
|
+
values: [
|
|
426
|
+
'kbReleaseNotes',
|
|
427
|
+
'kbFaq'
|
|
428
|
+
]
|
|
429
|
+
}
|
|
430
|
+
}
|
|
266
431
|
},
|
|
267
432
|
Jarvis: {
|
|
268
433
|
subOptions: {
|
|
269
434
|
ContentTypes: {
|
|
270
|
-
values: [
|
|
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
|
|
447
|
+
test('all levels, multiple filters, multiple values', ()=>{
|
|
448
|
+
var _frontendModel_options_subOptions;
|
|
281
449
|
const frontendModel = ModelsMocks.mockFrontendModel();
|
|
282
|
-
const filters = (
|
|
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
|
-
[
|
|
285
|
-
|
|
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: [
|
|
470
|
+
values: [
|
|
471
|
+
'KnowledgeBase'
|
|
472
|
+
],
|
|
292
473
|
subOptions: {
|
|
293
474
|
KnowledgeBase: {
|
|
294
475
|
subOptions: {
|
|
295
476
|
ProductAreas: {
|
|
296
|
-
values: [
|
|
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
|
|
489
|
+
test('all levels, multiple filters, multiple values (more values)', ()=>{
|
|
490
|
+
var _frontendModel_options_subOptions;
|
|
307
491
|
const frontendModel = ModelsMocks.mockFrontendModel();
|
|
308
|
-
const filters = (
|
|
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
|
-
[
|
|
311
|
-
|
|
312
|
-
|
|
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: [
|
|
518
|
+
values: [
|
|
519
|
+
'KnowledgeBase'
|
|
520
|
+
],
|
|
319
521
|
subOptions: {
|
|
320
522
|
KnowledgeBase: {
|
|
321
523
|
subOptions: {
|
|
322
524
|
ContentTypes: {
|
|
323
|
-
values: [
|
|
525
|
+
values: [
|
|
526
|
+
'kbReleaseNotes',
|
|
527
|
+
'kbHowTo'
|
|
528
|
+
]
|
|
324
529
|
},
|
|
325
530
|
ProductAreas: {
|
|
326
|
-
values: [
|
|
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
|
|
542
|
+
test('all levels, multiple filters, multiple values (more values2)', ()=>{
|
|
543
|
+
var _frontendModel_options_subOptions;
|
|
337
544
|
const frontendModel = ModelsMocks.mockFrontendModel();
|
|
338
|
-
const filters = (
|
|
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
|
-
[
|
|
341
|
-
|
|
342
|
-
|
|
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: [
|
|
574
|
+
values: [
|
|
575
|
+
'KnowledgeBase',
|
|
576
|
+
'Jarvis'
|
|
577
|
+
],
|
|
349
578
|
subOptions: {
|
|
350
579
|
KnowledgeBase: {
|
|
351
580
|
subOptions: {
|
|
352
581
|
ContentTypes: {
|
|
353
|
-
values: [
|
|
582
|
+
values: [
|
|
583
|
+
'kbReleaseNotes',
|
|
584
|
+
'kbHowTo'
|
|
585
|
+
]
|
|
354
586
|
},
|
|
355
587
|
ProductAreas: {
|
|
356
|
-
values: [
|
|
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: [
|
|
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([
|
|
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([
|
|
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
|
|
658
|
+
test('should create proper Selections model structure', ()=>{
|
|
659
|
+
var _frontendModel_options_subOptions;
|
|
408
660
|
const frontendModel = ModelsMocks.mockFrontendModel();
|
|
409
|
-
const filters = (
|
|
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
|
-
[
|
|
412
|
-
|
|
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
|