@servicetitan/titan-chatbot-api 7.1.2 → 9.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.d.ts +1 -0
- package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts.map +1 -1
- package/dist/api-client/__mocks__/chatbot-api-client.mock.js +22 -47
- package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -1
- package/dist/api-client/base/chatbot-api-client.d.ts +7 -0
- package/dist/api-client/base/chatbot-api-client.d.ts.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/index.d.ts +2 -2
- package/dist/api-client/index.d.ts.map +1 -1
- package/dist/api-client/index.js +12 -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__/chatbot-api-client-stream.test.d.ts +2 -0
- package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.d.ts.map +1 -0
- package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.js +240 -0
- package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.js.map +1 -0
- 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.d.ts +11 -0
- package/dist/api-client/titan-chat/chatbot-api-client.d.ts.map +1 -1
- package/dist/api-client/titan-chat/chatbot-api-client.js +69 -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.js +359 -812
- 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 +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/models/__tests__/chatbot-customizations.test.d.ts +2 -0
- package/dist/models/__tests__/chatbot-customizations.test.d.ts.map +1 -0
- package/dist/models/__tests__/chatbot-customizations.test.js +36 -0
- package/dist/models/__tests__/chatbot-customizations.test.js.map +1 -0
- package/dist/models/chatbot-customizations.d.ts +17 -0
- package/dist/models/chatbot-customizations.d.ts.map +1 -1
- package/dist/models/chatbot-customizations.js +7 -1
- package/dist/models/chatbot-customizations.js.map +1 -1
- package/dist/models/index.js +1 -0
- package/dist/models/index.js.map +1 -1
- package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.d.ts +2 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.d.ts.map +1 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.js +107 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.js.map +1 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.d.ts +2 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.d.ts.map +1 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.js +312 -0
- package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.js.map +1 -0
- 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.d.ts +26 -2
- package/dist/stores/chatbot-ui-backend.store.d.ts.map +1 -1
- package/dist/stores/chatbot-ui-backend.store.js +295 -239
- 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/streaming/__tests__/agent-stream.test.d.ts +2 -0
- package/dist/streaming/__tests__/agent-stream.test.d.ts.map +1 -0
- package/dist/streaming/__tests__/agent-stream.test.js +92 -0
- package/dist/streaming/__tests__/agent-stream.test.js.map +1 -0
- package/dist/streaming/agent-stream.d.ts +83 -0
- package/dist/streaming/agent-stream.d.ts.map +1 -0
- package/dist/streaming/agent-stream.js +28 -0
- package/dist/streaming/agent-stream.js.map +1 -0
- package/dist/streaming/index.d.ts +3 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +4 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/run-agent-stream.d.ts +23 -0
- package/dist/streaming/run-agent-stream.d.ts.map +1 -0
- package/dist/streaming/run-agent-stream.js +83 -0
- package/dist/streaming/run-agent-stream.js.map +1 -0
- 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 +6 -3
- package/src/api-client/__mocks__/chatbot-api-client.mock.ts +1 -0
- package/src/api-client/base/chatbot-api-client.ts +11 -0
- package/src/api-client/index.ts +2 -7
- package/src/api-client/models/index.ts +15 -13
- package/src/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.ts +208 -0
- package/src/api-client/titan-chat/chatbot-api-client.ts +46 -0
- package/src/api-client/titan-chat/index.ts +2 -1
- package/src/api-client/utils/model-utils.ts +4 -8
- package/src/index.ts +7 -2
- package/src/models/__tests__/chatbot-customizations.test.ts +26 -0
- package/src/models/chatbot-customizations.ts +20 -0
- package/src/stores/__tests__/chatbot-ui-backend.store.observability.test.ts +105 -0
- package/src/stores/__tests__/chatbot-ui-backend.store.streaming.test.ts +261 -0
- package/src/stores/chatbot-ui-backend.store.ts +179 -4
- package/src/stores/index.ts +5 -12
- package/src/streaming/__tests__/agent-stream.test.ts +80 -0
- package/src/streaming/agent-stream.ts +103 -0
- package/src/streaming/index.ts +2 -0
- package/src/streaming/run-agent-stream.ts +109 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts +0 -2
- package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts.map +0 -1
- package/dist/api-client/help-center/__tests__/converter-from-models.test.js +0 -34
- package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +0 -1
- package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts +0 -2
- package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts.map +0 -1
- package/dist/api-client/help-center/__tests__/converter-to-models.test.js +0 -82
- package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +0 -1
- package/dist/api-client/help-center/chatbot-api-client.d.ts +0 -32
- package/dist/api-client/help-center/chatbot-api-client.d.ts.map +0 -1
- package/dist/api-client/help-center/chatbot-api-client.js +0 -102
- package/dist/api-client/help-center/chatbot-api-client.js.map +0 -1
- package/dist/api-client/help-center/converter-from-models.d.ts +0 -13
- package/dist/api-client/help-center/converter-from-models.d.ts.map +0 -1
- package/dist/api-client/help-center/converter-from-models.js +0 -114
- package/dist/api-client/help-center/converter-from-models.js.map +0 -1
- package/dist/api-client/help-center/converter-to-models.d.ts +0 -13
- package/dist/api-client/help-center/converter-to-models.d.ts.map +0 -1
- package/dist/api-client/help-center/converter-to-models.js +0 -98
- package/dist/api-client/help-center/converter-to-models.js.map +0 -1
- package/dist/api-client/help-center/index.d.ts +0 -2
- package/dist/api-client/help-center/index.d.ts.map +0 -1
- package/dist/api-client/help-center/index.js +0 -2
- package/dist/api-client/help-center/index.js.map +0 -1
- package/dist/api-client/help-center/native-client.d.ts +0 -1268
- package/dist/api-client/help-center/native-client.d.ts.map +0 -1
- package/dist/api-client/help-center/native-client.js +0 -6242
- package/dist/api-client/help-center/native-client.js.map +0 -1
- package/src/api-client/help-center/__tests__/converter-from-models.test.ts +0 -41
- package/src/api-client/help-center/__tests__/converter-to-models.test.ts +0 -89
- package/src/api-client/help-center/chatbot-api-client.ts +0 -122
- package/src/api-client/help-center/converter-from-models.ts +0 -133
- package/src/api-client/help-center/converter-to-models.ts +0 -127
- package/src/api-client/help-center/index.ts +0 -1
- package/src/api-client/help-center/native-client.ts +0 -5727
|
@@ -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
|
|
8
|
-
|
|
9
|
-
|
|
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(()
|
|
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(()
|
|
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', [
|
|
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', [
|
|
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
|
|
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', [
|
|
80
|
-
|
|
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', [
|
|
85
|
-
|
|
86
|
-
|
|
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', [
|
|
102
|
-
|
|
103
|
-
|
|
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', [
|
|
110
|
-
|
|
111
|
-
|
|
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', [
|
|
118
|
-
|
|
119
|
-
|
|
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', [
|
|
168
|
+
validateSelected('Sources', [
|
|
169
|
+
'KnowledgeBase'
|
|
170
|
+
]);
|
|
126
171
|
validateSelected('ContentTypes', []);
|
|
127
|
-
validateSelected('ProductAreas', [
|
|
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', [
|
|
181
|
+
validateSelected('Sources', [
|
|
182
|
+
'KnowledgeBase'
|
|
183
|
+
]);
|
|
134
184
|
validateSelected('ContentTypes', []);
|
|
135
|
-
validateSelected('ProductAreas', [
|
|
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', [
|
|
188
|
-
|
|
189
|
-
|
|
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: [
|
|
294
|
+
values: [
|
|
295
|
+
'KnowledgeBase',
|
|
296
|
+
'Jarvis'
|
|
297
|
+
],
|
|
230
298
|
subOptions: {
|
|
231
299
|
KnowledgeBase: {
|
|
232
300
|
subOptions: {
|
|
233
301
|
ContentTypes: {
|
|
234
|
-
values: [
|
|
302
|
+
values: [
|
|
303
|
+
'kbReleaseNotes',
|
|
304
|
+
'kbHowTo'
|
|
305
|
+
]
|
|
235
306
|
},
|
|
236
307
|
ProductAreas: {
|
|
237
|
-
values: [
|
|
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: [
|
|
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: [
|
|
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: [
|
|
359
|
+
values: [
|
|
360
|
+
'KnowledgeBase'
|
|
361
|
+
],
|
|
281
362
|
subOptions: {
|
|
282
363
|
KnowledgeBase: {
|
|
283
364
|
subOptions: {
|
|
284
365
|
ProductAreas: {
|
|
285
|
-
values: [
|
|
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: [
|
|
386
|
+
values: [
|
|
387
|
+
'KnowledgeBase',
|
|
388
|
+
'Jarvis'
|
|
389
|
+
],
|
|
304
390
|
subOptions: {
|
|
305
391
|
KnowledgeBase: {
|
|
306
392
|
subOptions: {
|
|
307
393
|
ContentTypes: {
|
|
308
|
-
values: [
|
|
309
|
-
|
|
310
|
-
|
|
394
|
+
values: [
|
|
395
|
+
'kbReleaseNotes'
|
|
396
|
+
]
|
|
397
|
+
}
|
|
398
|
+
}
|
|
311
399
|
},
|
|
312
400
|
Jarvis: {
|
|
313
401
|
subOptions: {
|
|
314
402
|
ContentTypes: {
|
|
315
|
-
values: [
|
|
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 = [
|
|
331
|
-
|
|
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([
|
|
432
|
+
checkDisabled([
|
|
433
|
+
true,
|
|
434
|
+
true,
|
|
435
|
+
true,
|
|
436
|
+
true,
|
|
437
|
+
true
|
|
438
|
+
]);
|
|
337
439
|
store.selectOption('Sources', 'KnowledgeBase');
|
|
338
|
-
checkDisabled([
|
|
440
|
+
checkDisabled([
|
|
441
|
+
false,
|
|
442
|
+
false,
|
|
443
|
+
false,
|
|
444
|
+
true,
|
|
445
|
+
true
|
|
446
|
+
]);
|
|
339
447
|
store.selectOption('Sources', 'Jarvis');
|
|
340
|
-
checkDisabled([
|
|
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([
|
|
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([
|
|
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([
|
|
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: ()
|
|
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: ()
|
|
506
|
+
isDefaultSelected: ()=>true
|
|
386
507
|
});
|
|
387
|
-
expect(store.selected.get('Sources')).toEqual([
|
|
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([
|
|
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
|