@servicetitan/titan-chatbot-api 3.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 (160) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts +11 -0
  3. package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts.map +1 -0
  4. package/dist/api-client/__mocks__/chatbot-api-client.mock.js +47 -0
  5. package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -0
  6. package/dist/api-client/base/chatbot-api-client.d.ts +27 -0
  7. package/dist/api-client/base/chatbot-api-client.d.ts.map +1 -0
  8. package/dist/api-client/base/chatbot-api-client.js +10 -0
  9. package/dist/api-client/base/chatbot-api-client.js.map +1 -0
  10. package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts +2 -0
  11. package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts.map +1 -0
  12. package/dist/api-client/help-center/__tests__/converter-from-models.test.js +34 -0
  13. package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +1 -0
  14. package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts +2 -0
  15. package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts.map +1 -0
  16. package/dist/api-client/help-center/__tests__/converter-to-models.test.js +82 -0
  17. package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +1 -0
  18. package/dist/api-client/help-center/chatbot-api-client.d.ts +31 -0
  19. package/dist/api-client/help-center/chatbot-api-client.d.ts.map +1 -0
  20. package/dist/api-client/help-center/chatbot-api-client.js +90 -0
  21. package/dist/api-client/help-center/chatbot-api-client.js.map +1 -0
  22. package/dist/api-client/help-center/converter-from-models.d.ts +13 -0
  23. package/dist/api-client/help-center/converter-from-models.d.ts.map +1 -0
  24. package/dist/api-client/help-center/converter-from-models.js +113 -0
  25. package/dist/api-client/help-center/converter-from-models.js.map +1 -0
  26. package/dist/api-client/help-center/converter-to-models.d.ts +13 -0
  27. package/dist/api-client/help-center/converter-to-models.d.ts.map +1 -0
  28. package/dist/api-client/help-center/converter-to-models.js +95 -0
  29. package/dist/api-client/help-center/converter-to-models.js.map +1 -0
  30. package/dist/api-client/help-center/index.d.ts +2 -0
  31. package/dist/api-client/help-center/index.d.ts.map +1 -0
  32. package/dist/api-client/help-center/index.js +2 -0
  33. package/dist/api-client/help-center/index.js.map +1 -0
  34. package/dist/api-client/help-center/native-client.d.ts +1260 -0
  35. package/dist/api-client/help-center/native-client.d.ts.map +1 -0
  36. package/dist/api-client/help-center/native-client.js +6169 -0
  37. package/dist/api-client/help-center/native-client.js.map +1 -0
  38. package/dist/api-client/index.d.ts +8 -0
  39. package/dist/api-client/index.d.ts.map +1 -0
  40. package/dist/api-client/index.js +8 -0
  41. package/dist/api-client/index.js.map +1 -0
  42. package/dist/api-client/models/__mocks__/models.mock.d.ts +13 -0
  43. package/dist/api-client/models/__mocks__/models.mock.d.ts.map +1 -0
  44. package/dist/api-client/models/__mocks__/models.mock.js +114 -0
  45. package/dist/api-client/models/__mocks__/models.mock.js.map +1 -0
  46. package/dist/api-client/models/index.d.ts +22 -0
  47. package/dist/api-client/models/index.d.ts.map +1 -0
  48. package/dist/api-client/models/index.js +15 -0
  49. package/dist/api-client/models/index.js.map +1 -0
  50. package/dist/api-client/titan-chat/chatbot-api-client.d.ts +34 -0
  51. package/dist/api-client/titan-chat/chatbot-api-client.d.ts.map +1 -0
  52. package/dist/api-client/titan-chat/chatbot-api-client.js +72 -0
  53. package/dist/api-client/titan-chat/chatbot-api-client.js.map +1 -0
  54. package/dist/api-client/titan-chat/index.d.ts +2 -0
  55. package/dist/api-client/titan-chat/index.d.ts.map +1 -0
  56. package/dist/api-client/titan-chat/index.js +2 -0
  57. package/dist/api-client/titan-chat/index.js.map +1 -0
  58. package/dist/api-client/titan-chat/native-client.d.ts +225 -0
  59. package/dist/api-client/titan-chat/native-client.d.ts.map +1 -0
  60. package/dist/api-client/titan-chat/native-client.js +931 -0
  61. package/dist/api-client/titan-chat/native-client.js.map +1 -0
  62. package/dist/api-client/utils/model-utils.d.ts +4 -0
  63. package/dist/api-client/utils/model-utils.d.ts.map +1 -0
  64. package/dist/api-client/utils/model-utils.js +58 -0
  65. package/dist/api-client/utils/model-utils.js.map +1 -0
  66. package/dist/index.d.ts +6 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +7 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/models/chatbot-customizations.d.ts +15 -0
  71. package/dist/models/chatbot-customizations.d.ts.map +1 -0
  72. package/dist/models/chatbot-customizations.js +2 -0
  73. package/dist/models/chatbot-customizations.js.map +1 -0
  74. package/dist/models/index.d.ts +2 -0
  75. package/dist/models/index.d.ts.map +1 -0
  76. package/dist/models/index.js +2 -0
  77. package/dist/models/index.js.map +1 -0
  78. package/dist/stores/__tests__/chatbot-ui-backend.store.test.d.ts +2 -0
  79. package/dist/stores/__tests__/chatbot-ui-backend.store.test.d.ts.map +1 -0
  80. package/dist/stores/__tests__/chatbot-ui-backend.store.test.js +341 -0
  81. package/dist/stores/__tests__/chatbot-ui-backend.store.test.js.map +1 -0
  82. package/dist/stores/__tests__/chatbot-ui.store.test.d.ts +2 -0
  83. package/dist/stores/__tests__/chatbot-ui.store.test.d.ts.map +1 -0
  84. package/dist/stores/__tests__/chatbot-ui.store.test.js +166 -0
  85. package/dist/stores/__tests__/chatbot-ui.store.test.js.map +1 -0
  86. package/dist/stores/__tests__/filter.store.test.d.ts +2 -0
  87. package/dist/stores/__tests__/filter.store.test.d.ts.map +1 -0
  88. package/dist/stores/__tests__/filter.store.test.js +316 -0
  89. package/dist/stores/__tests__/filter.store.test.js.map +1 -0
  90. package/dist/stores/__tests__/initialize.store.test.d.ts +2 -0
  91. package/dist/stores/__tests__/initialize.store.test.d.ts.map +1 -0
  92. package/dist/stores/__tests__/initialize.store.test.js +54 -0
  93. package/dist/stores/__tests__/initialize.store.test.js.map +1 -0
  94. package/dist/stores/chatbot-ui-backend.store.d.ts +61 -0
  95. package/dist/stores/chatbot-ui-backend.store.d.ts.map +1 -0
  96. package/dist/stores/chatbot-ui-backend.store.js +396 -0
  97. package/dist/stores/chatbot-ui-backend.store.js.map +1 -0
  98. package/dist/stores/chatbot-ui.store.d.ts +25 -0
  99. package/dist/stores/chatbot-ui.store.d.ts.map +1 -0
  100. package/dist/stores/chatbot-ui.store.js +87 -0
  101. package/dist/stores/chatbot-ui.store.js.map +1 -0
  102. package/dist/stores/filter.store.d.ts +30 -0
  103. package/dist/stores/filter.store.d.ts.map +1 -0
  104. package/dist/stores/filter.store.js +334 -0
  105. package/dist/stores/filter.store.js.map +1 -0
  106. package/dist/stores/index.d.ts +4 -0
  107. package/dist/stores/index.d.ts.map +1 -0
  108. package/dist/stores/index.js +4 -0
  109. package/dist/stores/index.js.map +1 -0
  110. package/dist/stores/initialize.store.d.ts +17 -0
  111. package/dist/stores/initialize.store.d.ts.map +1 -0
  112. package/dist/stores/initialize.store.js +98 -0
  113. package/dist/stores/initialize.store.js.map +1 -0
  114. package/dist/utils/__tests__/axios-utils.test.d.ts +2 -0
  115. package/dist/utils/__tests__/axios-utils.test.d.ts.map +1 -0
  116. package/dist/utils/__tests__/axios-utils.test.js +33 -0
  117. package/dist/utils/__tests__/axios-utils.test.js.map +1 -0
  118. package/dist/utils/axios-utils.d.ts +5 -0
  119. package/dist/utils/axios-utils.d.ts.map +1 -0
  120. package/dist/utils/axios-utils.js +23 -0
  121. package/dist/utils/axios-utils.js.map +1 -0
  122. package/dist/utils/test-utils.d.ts +5 -0
  123. package/dist/utils/test-utils.d.ts.map +1 -0
  124. package/dist/utils/test-utils.js +17 -0
  125. package/dist/utils/test-utils.js.map +1 -0
  126. package/package.json +45 -0
  127. package/src/api-client/__mocks__/chatbot-api-client.mock.ts +11 -0
  128. package/src/api-client/base/chatbot-api-client.ts +33 -0
  129. package/src/api-client/help-center/__tests__/converter-from-models.test.ts +41 -0
  130. package/src/api-client/help-center/__tests__/converter-to-models.test.ts +89 -0
  131. package/src/api-client/help-center/chatbot-api-client.ts +107 -0
  132. package/src/api-client/help-center/converter-from-models.ts +132 -0
  133. package/src/api-client/help-center/converter-to-models.ts +124 -0
  134. package/src/api-client/help-center/index.ts +1 -0
  135. package/src/api-client/help-center/native-client.ts +5662 -0
  136. package/src/api-client/index.ts +12 -0
  137. package/src/api-client/models/__mocks__/models.mock.ts +141 -0
  138. package/src/api-client/models/index.ts +48 -0
  139. package/src/api-client/titan-chat/chatbot-api-client.ts +77 -0
  140. package/src/api-client/titan-chat/index.ts +1 -0
  141. package/src/api-client/titan-chat/native-client.ts +826 -0
  142. package/src/api-client/utils/model-utils.ts +68 -0
  143. package/src/cypress.d.ts +10 -0
  144. package/src/index.ts +6 -0
  145. package/src/models/chatbot-customizations.ts +16 -0
  146. package/src/models/index.ts +1 -0
  147. package/src/stores/__tests__/chatbot-ui-backend.store.test.ts +426 -0
  148. package/src/stores/__tests__/chatbot-ui.store.test.ts +196 -0
  149. package/src/stores/__tests__/filter.store.test.ts +363 -0
  150. package/src/stores/__tests__/initialize.store.test.ts +73 -0
  151. package/src/stores/chatbot-ui-backend.store.ts +401 -0
  152. package/src/stores/chatbot-ui.store.ts +82 -0
  153. package/src/stores/filter.store.ts +250 -0
  154. package/src/stores/index.ts +12 -0
  155. package/src/stores/initialize.store.ts +62 -0
  156. package/src/utils/__tests__/axios-utils.test.ts +40 -0
  157. package/src/utils/axios-utils.ts +25 -0
  158. package/src/utils/test-utils.ts +22 -0
  159. package/tsconfig.json +19 -0
  160. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,166 @@
1
+ import { expect } from '@jest/globals';
2
+ import { ChatError, ChatUiEvent } from '@servicetitan/titan-chat-ui-common';
3
+ import { Models, ModelsMocks } from '../../api-client';
4
+ import { initTestContainer } from '../../utils/test-utils';
5
+ import { ChatbotUiEvent, ChatbotUiStore } from '../chatbot-ui.store';
6
+ import { FilterStore } from '../filter.store';
7
+ const mockEventEmitter = {
8
+ on: jest.fn(),
9
+ off: jest.fn(),
10
+ emit: jest.fn(),
11
+ listeners: jest.fn(),
12
+ listenerCount: jest.fn(),
13
+ };
14
+ jest.mock('events', () => ({
15
+ EventEmitter: class {
16
+ constructor() {
17
+ Object.defineProperty(this, "on", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: mockEventEmitter.on
22
+ });
23
+ Object.defineProperty(this, "off", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: mockEventEmitter.off
28
+ });
29
+ Object.defineProperty(this, "emit", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: mockEventEmitter.emit
34
+ });
35
+ Object.defineProperty(this, "listeners", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: mockEventEmitter.listeners
40
+ });
41
+ Object.defineProperty(this, "listenerCount", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: mockEventEmitter.listenerCount
46
+ });
47
+ }
48
+ },
49
+ }));
50
+ const initContainer = initTestContainer(ChatbotUiStore, () => { });
51
+ describe('[ChatbotUiStore]', () => {
52
+ let store;
53
+ beforeEach(() => {
54
+ const container = initContainer();
55
+ store = container.get(ChatbotUiStore);
56
+ jest.useFakeTimers();
57
+ jest.setSystemTime(Date.parse('2021-01-01T00:00:00.000Z'));
58
+ });
59
+ afterEach(() => {
60
+ jest.useRealTimers();
61
+ jest.clearAllMocks();
62
+ mockEventEmitter.on.mockClear();
63
+ mockEventEmitter.off.mockClear();
64
+ mockEventEmitter.emit.mockClear();
65
+ mockEventEmitter.listeners.mockClear();
66
+ mockEventEmitter.listenerCount.mockClear();
67
+ });
68
+ test('should have default state', () => {
69
+ expect(store.filterStore).toBeInstanceOf(FilterStore);
70
+ });
71
+ test('should setFilters', () => {
72
+ const frontendModel = ModelsMocks.mockFrontendModel();
73
+ store.setFilters(frontendModel);
74
+ expect(store.filterStore.filters.length).toEqual(1);
75
+ expect(store.filterStore.filters[0].key).toEqual('Sources');
76
+ });
77
+ describe('with chat events', () => {
78
+ test('should sendSessionFeedback', async () => {
79
+ mockEmit();
80
+ const feedback = new Models.Feedback({
81
+ sessionId: 1,
82
+ rating: Models.FeedbackRatings.ThumbsDown,
83
+ description: 'description',
84
+ });
85
+ await store.sendSessionFeedback(feedback);
86
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(ChatbotUiEvent.eventChatbotSessionFeedback, expect.any(Function), expect.any(Function), feedback);
87
+ });
88
+ test('should sendMessageFeedback', async () => {
89
+ mockEmit();
90
+ const feedback = new Models.Feedback({
91
+ sessionId: 1,
92
+ messageId: 1,
93
+ linkUrl: 'https://example.com/feedback',
94
+ options: [Models.FeedbackOptions.Unclear],
95
+ rating: Models.FeedbackRatings.ThumbsUp,
96
+ description: 'description',
97
+ });
98
+ const message = {
99
+ id: 1,
100
+ sessionId: 1,
101
+ answer: 'message text',
102
+ guardFlag: 'N',
103
+ isGuardrailed: false,
104
+ };
105
+ await store.sendMessageFeedback(message, feedback);
106
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(ChatbotUiEvent.eventChatbotMessageFeedback, expect.any(Function), expect.any(Function), feedback);
107
+ expect(feedback.messageId).toBe(message.id);
108
+ });
109
+ test('should recover', async () => {
110
+ mockEmit();
111
+ const spyRecoverCustomization = jest.fn().mockResolvedValue(undefined);
112
+ store.customizations.error = {
113
+ recover: spyRecoverCustomization,
114
+ };
115
+ store.setError('Test error');
116
+ await store.recover();
117
+ expect(spyRecoverCustomization).toHaveBeenCalledWith(store.error);
118
+ expect(mockEventEmitter.emit).not.toHaveBeenCalled();
119
+ await checkScrollTriggered();
120
+ });
121
+ test('should recover without customizations', async () => {
122
+ mockEmit();
123
+ const spyRecoverCustomization = jest.fn().mockResolvedValue(undefined);
124
+ store.setError('Test error');
125
+ await store.recover();
126
+ expect(spyRecoverCustomization).not.toHaveBeenCalled();
127
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(ChatUiEvent.eventRecover, expect.any(Function), expect.any(Function), new ChatError('Test error'));
128
+ await checkScrollTriggered();
129
+ });
130
+ test('should sendMessageText without message', async () => {
131
+ mockEmit();
132
+ await store.sendMessageText('');
133
+ expect(mockEventEmitter.emit).not.toHaveBeenCalledWith(ChatUiEvent.eventMessageSend, expect.any(Function), expect.any(Function), expect.objectContaining({
134
+ type: 'message',
135
+ message: '',
136
+ }), store.filterStore.export());
137
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(ChatUiEvent.eventTimerRestart, expect.any(Function), expect.any(Function));
138
+ await checkScrollTriggered(false);
139
+ });
140
+ test('should sendMessageText', async () => {
141
+ mockEmit();
142
+ const messageText = 'Hello, world!';
143
+ await store.sendMessageText(messageText);
144
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(ChatUiEvent.eventMessageSend, expect.any(Function), expect.any(Function), expect.objectContaining({
145
+ type: 'message',
146
+ message: messageText,
147
+ }), store.filterStore.export());
148
+ expect(mockEventEmitter.emit).toHaveBeenCalledWith(ChatUiEvent.eventTimerRestart, expect.any(Function), expect.any(Function));
149
+ await checkScrollTriggered();
150
+ });
151
+ function mockEmit() {
152
+ mockEventEmitter.listeners.mockImplementation(() => ['1']);
153
+ mockEventEmitter.listenerCount.mockReturnValue(1);
154
+ mockEventEmitter.emit.mockImplementation(async (eventName, resolve) => {
155
+ await Promise.resolve();
156
+ resolve();
157
+ });
158
+ }
159
+ async function checkScrollTriggered(triggered = true) {
160
+ const counter = store.scrollCounter;
161
+ await jest.runOnlyPendingTimersAsync();
162
+ expect(counter < store.scrollCounter).toBe(triggered);
163
+ }
164
+ });
165
+ });
166
+ //# sourceMappingURL=chatbot-ui.store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-ui.store.test.js","sourceRoot":"","sources":["../../../src/stores/__tests__/chatbot-ui.store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=filter.store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.store.test.d.ts","sourceRoot":"","sources":["../../../src/stores/__tests__/filter.store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,316 @@
1
+ import { expect } from '@jest/globals';
2
+ import { Models, ModelsMocks } from '../../api-client';
3
+ import { FilterStore } from '../filter.store';
4
+ describe('[FilterStore]', () => {
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);
10
+ };
11
+ const validateSelected = (key, expected) => {
12
+ if (!expected) {
13
+ expect(store.selectedOptions[key]).toBeUndefined();
14
+ }
15
+ expect(store.selectedOptions[key]).toEqual(expected);
16
+ };
17
+ beforeEach(() => {
18
+ store = new FilterStore();
19
+ });
20
+ afterEach(() => {
21
+ jest.clearAllMocks();
22
+ });
23
+ test('should validate defaults', () => {
24
+ expect(Object.keys(store.filters).length).toEqual(0);
25
+ expect(Object.keys(store.selectedOptions).length).toEqual(0);
26
+ });
27
+ test('Should initialize properly', () => {
28
+ store.initFilters(ModelsMocks.mockFrontendModel());
29
+ // We initialized 1 root filter (Sources) with 2 subgroups
30
+ expect(store.filters.length).toEqual(1);
31
+ expect(store.filters[0].key).toEqual('Sources');
32
+ expect(store.filters[0].displayName).toEqual('Sources');
33
+ expect(store.filters[0].type).toEqual(Models.OptionType.Group);
34
+ expect(store.filters[0].subOptions.length).toEqual(2);
35
+ const sourceKb = store.filters[0].subOptions[0];
36
+ expect(sourceKb.key).toEqual('KnowledgeBase');
37
+ expect(sourceKb.displayName).toEqual('Knowledge Base');
38
+ expect(sourceKb.type).toEqual(Models.OptionType.Selectable);
39
+ expect(sourceKb.subOptions.length).toEqual(2);
40
+ const contentTypes = sourceKb.subOptions[0];
41
+ expect(contentTypes.key).toEqual('ContentTypes');
42
+ expect(contentTypes.displayName).toEqual('Content Types');
43
+ expect(contentTypes.type).toEqual(Models.OptionType.Group);
44
+ expect(contentTypes.subOptions.length).toEqual(3);
45
+ const productAreas = sourceKb.subOptions[1];
46
+ expect(productAreas.key).toEqual('ProductAreas');
47
+ expect(productAreas.displayName).toEqual('Product Areas');
48
+ expect(productAreas.type).toEqual(Models.OptionType.Group);
49
+ expect(productAreas.subOptions.length).toEqual(3);
50
+ });
51
+ test('Should fail when selecting option from non-existing filter', () => {
52
+ store.initFilters(ModelsMocks.mockFrontendModel());
53
+ expect(() => store.selectOption('non-existing', 'subFilter1')).toThrow('Filter with key "non-existing" does not exist.');
54
+ });
55
+ test('Should fail when selecting non-existing option from existing filter', () => {
56
+ store.initFilters(ModelsMocks.mockFrontendModel());
57
+ expect(() => store.selectOption('Sources', 'non-existing-option')).toThrow('Option "non-existing-option" does not exist in the filter "Sources".');
58
+ });
59
+ test('Should select value', () => {
60
+ store.initFilters(ModelsMocks.mockFrontendModel());
61
+ expect(store.filters.length).toEqual(1);
62
+ // Source filter: select Jarvis option: 1 filter + 1 subfilter
63
+ store.selectOption('Sources', 'Jarvis');
64
+ validateSelected('Sources', ['Jarvis']);
65
+ expect(store.filters.length).toEqual(2);
66
+ expect(store.filters[0].key).toEqual('Sources');
67
+ expect(store.filters[1].key).toEqual('ContentTypes');
68
+ expect(store.filters[1].subOptions.length).toEqual(3);
69
+ // Source filter: select knowledgeBase option (options with the same key are merged)
70
+ store.selectOption('Sources', 'KnowledgeBase');
71
+ validateSelected('Sources', ['Jarvis', 'KnowledgeBase']);
72
+ expect(store.filters.length).toEqual(3);
73
+ expect(store.filters[0].key).toEqual('Sources');
74
+ expect(store.filters[1].key).toEqual('ContentTypes');
75
+ expect(store.filters[1].subOptions.map(o => o.key)).toEqual([
76
+ 'kbReleaseNotes',
77
+ 'kbFaq',
78
+ 'kbHowTo',
79
+ 'xxx',
80
+ 'yyy',
81
+ ]);
82
+ store.selectOption('ContentTypes', 'kbReleaseNotes');
83
+ expect(store.filters.length).toEqual(3);
84
+ validateSelected('Sources', ['Jarvis', 'KnowledgeBase']);
85
+ validateSelected('ContentTypes', ['kbReleaseNotes']);
86
+ validateSelected('ProductAreas');
87
+ store.selectOption('ProductAreas', 'Call Booking');
88
+ expect(store.filters.length).toEqual(3);
89
+ validateSelected('Sources', ['Jarvis', 'KnowledgeBase']);
90
+ validateSelected('ContentTypes', ['kbReleaseNotes']);
91
+ validateSelected('ProductAreas', ['Call Booking']);
92
+ });
93
+ test('Should deselect value', () => {
94
+ store.initFilters(ModelsMocks.mockFrontendModel());
95
+ store.selectOption('Sources', 'KnowledgeBase');
96
+ store.selectOption('Sources', 'Jarvis');
97
+ store.selectOption('ContentTypes', 'kbReleaseNotes');
98
+ store.selectOption('ContentTypes', 'yyy');
99
+ store.selectOption('ContentTypes', 'kbHowTo');
100
+ store.selectOption('ProductAreas', 'Marketing');
101
+ store.selectOption('ProductAreas', 'Marketing Pro');
102
+ expect(store.filters.length).toEqual(3);
103
+ validateFilters('Sources', 2);
104
+ validateFilters('ContentTypes', 5);
105
+ validateFilters('ProductAreas', 3);
106
+ validateSelected('Sources', ['KnowledgeBase', 'Jarvis']);
107
+ validateSelected('ContentTypes', ['kbReleaseNotes', 'yyy', 'kbHowTo']);
108
+ validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
109
+ store.deselectOption('Sources', 'Jarvis');
110
+ expect(store.filters.length).toEqual(3);
111
+ validateFilters('Sources', 2);
112
+ validateFilters('ContentTypes', 3);
113
+ validateFilters('ProductAreas', 3);
114
+ validateSelected('Sources', ['KnowledgeBase']);
115
+ validateSelected('ContentTypes', ['kbReleaseNotes', 'kbHowTo']);
116
+ validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
117
+ store.deselectOption('ContentTypes', 'kbHowTo');
118
+ expect(store.filters.length).toEqual(3);
119
+ validateFilters('Sources', 2);
120
+ validateFilters('ContentTypes', 3);
121
+ validateFilters('ProductAreas', 3);
122
+ validateSelected('Sources', ['KnowledgeBase']);
123
+ validateSelected('ContentTypes', ['kbReleaseNotes']);
124
+ validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
125
+ store.deselectOption('ContentTypes', 'kbReleaseNotes');
126
+ expect(store.filters.length).toEqual(3);
127
+ validateFilters('Sources', 2);
128
+ validateFilters('ContentTypes', 3);
129
+ validateFilters('ProductAreas', 3);
130
+ validateSelected('Sources', ['KnowledgeBase']);
131
+ validateSelected('ContentTypes', []);
132
+ validateSelected('ProductAreas', ['Marketing', 'Marketing Pro']);
133
+ store.deselectOption('ProductAreas', 'Marketing Pro');
134
+ expect(store.filters.length).toEqual(3);
135
+ validateFilters('Sources', 2);
136
+ validateFilters('ContentTypes', 3);
137
+ validateFilters('ProductAreas', 3);
138
+ validateSelected('Sources', ['KnowledgeBase']);
139
+ validateSelected('ContentTypes', []);
140
+ validateSelected('ProductAreas', ['Marketing']);
141
+ store.deselectOption('Sources', 'KnowledgeBase');
142
+ expect(store.filters.length).toEqual(1);
143
+ validateFilters('Sources', 2);
144
+ validateFilters('ContentTypes', 0);
145
+ validateFilters('ProductAreas', 0);
146
+ validateSelected('Sources', []);
147
+ validateSelected('ContentTypes', []);
148
+ validateSelected('ProductAreas', []);
149
+ });
150
+ test('Should deselect value 2', () => {
151
+ store.initFilters(ModelsMocks.mockFrontendModel());
152
+ store.selectOption('Sources', 'KnowledgeBase');
153
+ validateFilters('Sources', 2);
154
+ validateFilters('ContentTypes', 3);
155
+ validateFilters('ProductAreas', 3);
156
+ store.selectOption('Sources', 'Jarvis');
157
+ expect(store.filters.length).toEqual(3);
158
+ validateFilters('Sources', 2);
159
+ validateFilters('ContentTypes', 5);
160
+ validateFilters('ProductAreas', 3);
161
+ store.deselectOption('Sources', 'KnowledgeBase');
162
+ validateFilters('Sources', 2);
163
+ validateFilters('ContentTypes', 3);
164
+ validateFilters('ProductAreas', 0);
165
+ store.selectOption('Sources', 'KnowledgeBase');
166
+ validateFilters('Sources', 2);
167
+ validateFilters('ContentTypes', 5);
168
+ validateFilters('ProductAreas', 3);
169
+ });
170
+ test('Should select all', () => {
171
+ store.initFilters(ModelsMocks.mockFrontendModel());
172
+ store.selectAll('Sources');
173
+ store.selectAll('ProductAreas');
174
+ store.selectAll('ContentTypes');
175
+ validateSelected('Sources', ['KnowledgeBase', 'Jarvis']);
176
+ validateSelected('ContentTypes', ['kbReleaseNotes', 'kbFaq', 'kbHowTo', 'xxx', 'yyy']);
177
+ validateSelected('ProductAreas', ['Call Booking', 'Marketing', 'Marketing Pro']);
178
+ validateFilters('Sources', 2);
179
+ validateFilters('ContentTypes', 5);
180
+ validateFilters('ProductAreas', 3);
181
+ });
182
+ test('Should deselect all', () => {
183
+ store.initFilters(ModelsMocks.mockFrontendModel());
184
+ store.selectAll('Sources');
185
+ store.selectAll('ContentTypes');
186
+ store.selectAll('ProductAreas');
187
+ store.deselectAll('ContentTypes');
188
+ store.deselectAll('ProductAreas');
189
+ store.deselectAll('Sources');
190
+ validateSelected('Sources', []);
191
+ validateSelected('ContentTypes', []);
192
+ validateSelected('ProductAreas', []);
193
+ validateFilters('Sources', 2);
194
+ validateFilters('ContentTypes', 0);
195
+ validateFilters('ProductAreas', 0);
196
+ });
197
+ test('should getFilterLabel', () => {
198
+ const filterKey = 'contentTypes';
199
+ const label = store.getFilterLabel(filterKey);
200
+ expect(label).toEqual('Content Types');
201
+ });
202
+ test('should export', () => {
203
+ store.initFilters(ModelsMocks.mockFrontendModel());
204
+ store.selectOption('Sources', 'KnowledgeBase');
205
+ store.selectOption('Sources', 'Jarvis');
206
+ store.selectOption('ContentTypes', 'kbReleaseNotes');
207
+ store.selectOption('ContentTypes', 'yyy');
208
+ store.selectOption('ContentTypes', 'kbHowTo');
209
+ store.selectOption('ProductAreas', 'Marketing');
210
+ store.selectOption('ProductAreas', 'Marketing Pro');
211
+ const exported = store.export();
212
+ expect(exported).toEqual({
213
+ subOptions: {
214
+ Sources: {
215
+ subOptions: {
216
+ KnowledgeBase: {
217
+ subOptions: {
218
+ ContentTypes: {
219
+ values: ['kbReleaseNotes', 'kbHowTo'],
220
+ },
221
+ ProductAreas: {
222
+ values: ['Marketing', 'Marketing Pro'],
223
+ },
224
+ },
225
+ },
226
+ Jarvis: {
227
+ subOptions: {
228
+ ContentTypes: {
229
+ values: ['kbReleaseNotes', 'yyy'],
230
+ },
231
+ },
232
+ },
233
+ },
234
+ },
235
+ },
236
+ });
237
+ });
238
+ test('should export 2', () => {
239
+ store.initFilters(ModelsMocks.mockFrontendModel());
240
+ const exported = store.export();
241
+ expect(exported).toBeUndefined();
242
+ });
243
+ test('should export 3', () => {
244
+ store.initFilters(ModelsMocks.mockFrontendModel());
245
+ store.selectOption('Sources', 'KnowledgeBase');
246
+ const exported = store.export();
247
+ expect(exported).toEqual({
248
+ subOptions: {
249
+ Sources: {
250
+ subOptions: {
251
+ KnowledgeBase: {
252
+ subOptions: {},
253
+ },
254
+ },
255
+ },
256
+ },
257
+ });
258
+ });
259
+ test('should export 4', () => {
260
+ store.initFilters(ModelsMocks.mockFrontendModel());
261
+ store.selectOption('Sources', 'KnowledgeBase');
262
+ store.selectOption('ProductAreas', 'Marketing');
263
+ store.deselectOption('ProductAreas', 'Marketing');
264
+ store.selectOption('ProductAreas', 'Marketing');
265
+ const exported = store.export();
266
+ expect(exported).toEqual({
267
+ subOptions: {
268
+ Sources: {
269
+ subOptions: {
270
+ KnowledgeBase: {
271
+ subOptions: {
272
+ ProductAreas: {
273
+ values: ['Marketing'],
274
+ },
275
+ },
276
+ },
277
+ },
278
+ },
279
+ },
280
+ });
281
+ });
282
+ test('should export 5', () => {
283
+ store.initFilters(ModelsMocks.mockFrontendModel());
284
+ store.selectOption('Sources', 'KnowledgeBase');
285
+ store.selectOption('Sources', 'Jarvis');
286
+ store.selectOption('ContentTypes', 'kbReleaseNotes');
287
+ const exported = store.export();
288
+ expect(exported).toEqual({
289
+ subOptions: {
290
+ Sources: {
291
+ subOptions: {
292
+ KnowledgeBase: {
293
+ subOptions: {
294
+ ContentTypes: {
295
+ values: ['kbReleaseNotes'],
296
+ },
297
+ },
298
+ },
299
+ Jarvis: {
300
+ subOptions: {
301
+ ContentTypes: {
302
+ values: ['kbReleaseNotes'],
303
+ },
304
+ },
305
+ },
306
+ },
307
+ },
308
+ },
309
+ });
310
+ });
311
+ test('should export 6', () => {
312
+ const exported = store.export();
313
+ expect(exported).toBeUndefined();
314
+ });
315
+ });
316
+ //# sourceMappingURL=filter.store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.store.test.js","sourceRoot":"","sources":["../../../src/stores/__tests__/filter.store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=initialize.store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.store.test.d.ts","sourceRoot":"","sources":["../../../src/stores/__tests__/initialize.store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { expect } from '@jest/globals';
2
+ import { initTestContainer } from '../../utils/test-utils';
3
+ import { InitializeStore, InitializeStoreStatus } from '../initialize.store';
4
+ const initContainer = initTestContainer(InitializeStore, () => { });
5
+ describe('[InitializeStore]', () => {
6
+ let store;
7
+ let container;
8
+ beforeEach(() => {
9
+ container = initContainer();
10
+ store = container.get(InitializeStore);
11
+ });
12
+ afterEach(() => {
13
+ jest.clearAllMocks();
14
+ });
15
+ test('should have correct default values', () => {
16
+ expect(store.isInitialized).toBe(false);
17
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.None);
18
+ });
19
+ test('should initialize correctly', async () => {
20
+ const initializePromise = store.initialize();
21
+ expect(store.isInitialized).toBe(false);
22
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Pending);
23
+ await initializePromise;
24
+ expect(store.isInitialized).toBe(true);
25
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Success);
26
+ });
27
+ test('should create only one promise', async () => {
28
+ const spy = jest.spyOn(store, 'initializeInternal');
29
+ const initializePromise = store.initialize();
30
+ const initializePromise2 = store.initialize();
31
+ await initializePromise;
32
+ await initializePromise2;
33
+ expect(store.isInitialized).toBe(true);
34
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Success);
35
+ expect(spy).toHaveBeenCalledTimes(1); // Should be called once
36
+ });
37
+ test('should initialize correctly with force', async () => {
38
+ const spy = jest.spyOn(store, 'initializeInternal');
39
+ const initializePromise = store.initialize();
40
+ expect(store.isInitialized).toBe(false);
41
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Pending);
42
+ await initializePromise;
43
+ expect(store.isInitialized).toBe(true);
44
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Success);
45
+ const initializePromise2 = store.initialize(true);
46
+ expect(store.isInitialized).toBe(false);
47
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Pending);
48
+ await initializePromise2;
49
+ expect(store.isInitialized).toBe(true);
50
+ expect(store.initializeStatus).toBe(InitializeStoreStatus.Success);
51
+ expect(spy).toHaveBeenCalledTimes(2); // Should be called twice because of reset
52
+ });
53
+ });
54
+ //# sourceMappingURL=initialize.store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.store.test.js","sourceRoot":"","sources":["../../../src/stores/__tests__/initialize.store.test.ts"],"names":[],"mappings":"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"}