@coveo/push-api-client 1.6.9 → 2.1.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 (125) hide show
  1. package/README.md +2 -2
  2. package/dist/definitions/environment.d.ts +3 -3
  3. package/dist/definitions/errors/privilegeError.d.ts +6 -0
  4. package/dist/definitions/fieldAnalyser/fieldAnalyser.d.ts +2 -10
  5. package/dist/definitions/fieldAnalyser/{utils.d.ts → fieldUtils.d.ts} +0 -0
  6. package/dist/definitions/fieldAnalyser/{utils.spec.d.ts → fieldsUtils.spec.d.ts} +0 -0
  7. package/dist/definitions/fieldAnalyser/inconsistencies.d.ts +1 -1
  8. package/dist/definitions/fieldAnalyser/typeUtils.d.ts +3 -0
  9. package/dist/definitions/{source.spec.d.ts → fieldAnalyser/typeUtils.spec.d.ts} +0 -0
  10. package/dist/definitions/help/axiosUtils.d.ts +2 -0
  11. package/dist/definitions/help/fileConsumer.d.ts +26 -0
  12. package/dist/definitions/help/fileConsumer.spec.d.ts +1 -0
  13. package/dist/definitions/help/fileContainer.d.ts +9 -0
  14. package/dist/definitions/help/fileContainer.spec.d.ts +1 -0
  15. package/dist/definitions/help/urlUtils.d.ts +27 -0
  16. package/dist/definitions/index.d.ts +6 -2
  17. package/dist/definitions/interfaces.d.ts +39 -0
  18. package/dist/definitions/source/batchUploadDocumentsFromFile.d.ts +11 -0
  19. package/dist/definitions/source/catalog.d.ts +69 -0
  20. package/dist/definitions/source/catalog.spec.d.ts +1 -0
  21. package/dist/definitions/source/catalog.stream.spec.d.ts +1 -0
  22. package/dist/definitions/source/documentUploader.d.ts +5 -0
  23. package/dist/definitions/{source.d.ts → source/push.d.ts} +35 -77
  24. package/dist/definitions/source/push.spec.d.ts +1 -0
  25. package/dist/definitions/source/securityIdenty.d.ts +42 -0
  26. package/dist/definitions/source/source.d.ts +5 -0
  27. package/dist/definitions/uploadStrategy/fileContainerStrategy.d.ts +23 -0
  28. package/dist/definitions/uploadStrategy/index.d.ts +3 -0
  29. package/dist/definitions/uploadStrategy/strategy.d.ts +16 -0
  30. package/dist/definitions/uploadStrategy/streamChunkStrategy.d.ts +27 -0
  31. package/dist/definitions/validation/preconditions/apiKeyPrivilege.d.ts +3 -0
  32. package/dist/definitions/validation/preconditions/apiKeyPrivilege.spec.d.ts +1 -0
  33. package/dist/definitions/validation/preconditions/platformPrivilege.d.ts +7 -0
  34. package/dist/docs/assets/search.js +1 -1
  35. package/dist/docs/classes/AnySecurityIdentityBuilder.html +3 -3
  36. package/dist/docs/classes/DocumentBuilder.html +17 -17
  37. package/dist/docs/classes/FieldAnalyser.html +3 -3
  38. package/dist/docs/classes/GroupSecurityIdentityBuilder.html +3 -3
  39. package/dist/docs/classes/PushSource.html +43 -0
  40. package/dist/docs/classes/UserSecurityIdentityBuilder.html +3 -3
  41. package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +3 -3
  42. package/dist/docs/enums/PlatformEnvironment.html +1 -1
  43. package/dist/docs/enums/Region.html +1 -1
  44. package/dist/docs/enums/SourceVisibility.html +1 -1
  45. package/dist/docs/index.html +2 -2
  46. package/dist/docs/interfaces/BatchUpdateDocuments.html +1 -1
  47. package/dist/docs/interfaces/Document.html +14 -14
  48. package/dist/docs/interfaces/SecurityIdentity.html +4 -4
  49. package/dist/docs/interfaces/SecurityIdentityBuilder.html +1 -1
  50. package/dist/docs/interfaces/UploadBatchCallbackData.html +1 -1
  51. package/dist/docs/modules.html +3 -2
  52. package/dist/environment.js.map +1 -1
  53. package/dist/errors/privilegeError.js +13 -0
  54. package/dist/errors/privilegeError.js.map +1 -0
  55. package/dist/fieldAnalyser/fieldAnalyser.js +24 -62
  56. package/dist/fieldAnalyser/fieldAnalyser.js.map +1 -1
  57. package/dist/fieldAnalyser/fieldAnalyser.spec.js +28 -22
  58. package/dist/fieldAnalyser/fieldAnalyser.spec.js.map +1 -1
  59. package/dist/fieldAnalyser/{utils.js → fieldUtils.js} +5 -1
  60. package/dist/fieldAnalyser/fieldUtils.js.map +1 -0
  61. package/dist/fieldAnalyser/{utils.spec.js → fieldsUtils.spec.js} +7 -4
  62. package/dist/fieldAnalyser/fieldsUtils.spec.js.map +1 -0
  63. package/dist/fieldAnalyser/inconsistencies.js.map +1 -1
  64. package/dist/fieldAnalyser/typeUtils.js +39 -0
  65. package/dist/fieldAnalyser/typeUtils.js.map +1 -0
  66. package/dist/fieldAnalyser/typeUtils.spec.js +48 -0
  67. package/dist/fieldAnalyser/typeUtils.spec.js.map +1 -0
  68. package/dist/help/axiosUtils.js +12 -0
  69. package/dist/help/axiosUtils.js.map +1 -0
  70. package/dist/help/fileConsumer.js +100 -0
  71. package/dist/help/fileConsumer.js.map +1 -0
  72. package/dist/help/fileConsumer.spec.js +75 -0
  73. package/dist/help/fileConsumer.spec.js.map +1 -0
  74. package/dist/help/fileContainer.js +20 -0
  75. package/dist/help/fileContainer.js.map +1 -0
  76. package/dist/help/fileContainer.spec.js +34 -0
  77. package/dist/help/fileContainer.spec.js.map +1 -0
  78. package/dist/help/urlUtils.js +43 -0
  79. package/dist/help/urlUtils.js.map +1 -0
  80. package/dist/index.js +6 -3
  81. package/dist/index.js.map +1 -1
  82. package/dist/interfaces.js +3 -0
  83. package/dist/interfaces.js.map +1 -0
  84. package/dist/localtest.js +2 -2
  85. package/dist/localtest.js.map +1 -1
  86. package/dist/source/batchUploadDocumentsFromFile.js +50 -0
  87. package/dist/source/batchUploadDocumentsFromFile.js.map +1 -0
  88. package/dist/source/catalog.js +115 -0
  89. package/dist/source/catalog.js.map +1 -0
  90. package/dist/source/catalog.spec.js +239 -0
  91. package/dist/source/catalog.spec.js.map +1 -0
  92. package/dist/source/catalog.stream.spec.js +189 -0
  93. package/dist/source/catalog.stream.spec.js.map +1 -0
  94. package/dist/source/documentUploader.js +23 -0
  95. package/dist/source/documentUploader.js.map +1 -0
  96. package/dist/source/push.js +199 -0
  97. package/dist/source/push.js.map +1 -0
  98. package/dist/{source.spec.js → source/push.spec.js} +44 -27
  99. package/dist/source/push.spec.js.map +1 -0
  100. package/dist/source/securityIdenty.js +59 -0
  101. package/dist/source/securityIdenty.js.map +1 -0
  102. package/dist/source/source.js +9 -0
  103. package/dist/source/source.js.map +1 -0
  104. package/dist/uploadStrategy/fileContainerStrategy.js +34 -0
  105. package/dist/uploadStrategy/fileContainerStrategy.js.map +1 -0
  106. package/dist/uploadStrategy/index.js +7 -0
  107. package/dist/uploadStrategy/index.js.map +1 -0
  108. package/dist/uploadStrategy/strategy.js +3 -0
  109. package/dist/uploadStrategy/strategy.js.map +1 -0
  110. package/dist/uploadStrategy/streamChunkStrategy.js +51 -0
  111. package/dist/uploadStrategy/streamChunkStrategy.js.map +1 -0
  112. package/dist/validation/preconditions/apiKeyPrivilege.js +21 -0
  113. package/dist/validation/preconditions/apiKeyPrivilege.js.map +1 -0
  114. package/dist/validation/preconditions/apiKeyPrivilege.spec.js +70 -0
  115. package/dist/validation/preconditions/apiKeyPrivilege.spec.js.map +1 -0
  116. package/dist/validation/preconditions/platformPrivilege.js +35 -0
  117. package/dist/validation/preconditions/platformPrivilege.js.map +1 -0
  118. package/package.json +1 -1
  119. package/dist/docs/classes/Source.html +0 -45
  120. package/dist/docs/interfaces/BatchUpdateDocumentsFromFiles.html +0 -7
  121. package/dist/fieldAnalyser/utils.js.map +0 -1
  122. package/dist/fieldAnalyser/utils.spec.js.map +0 -1
  123. package/dist/source.js +0 -322
  124. package/dist/source.js.map +0 -1
  125. package/dist/source.spec.js.map +0 -1
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable node/no-unpublished-import */
4
+ jest.mock('@coveord/platform-client');
5
+ jest.mock('axios');
6
+ jest.mock('../fieldAnalyser/fieldAnalyser');
7
+ const platform_client_1 = require("@coveord/platform-client");
8
+ const documentBuilder_1 = require("../documentBuilder");
9
+ const axios_1 = require("axios");
10
+ const path_1 = require("path");
11
+ const process_1 = require("process");
12
+ const inconsistencies_1 = require("../fieldAnalyser/inconsistencies");
13
+ const fieldErrors_1 = require("../errors/fieldErrors");
14
+ const catalog_1 = require("./catalog");
15
+ const __1 = require("..");
16
+ const mockAxios = axios_1.default;
17
+ const mockedFieldAnalyser = jest.mocked(__1.FieldAnalyser);
18
+ const mockedPlatformClient = jest.mocked(platform_client_1.default);
19
+ const mockCreateSource = jest.fn();
20
+ const mockEvaluate = jest.fn();
21
+ const mockCreateField = jest.fn();
22
+ const mockAnalyserAdd = jest.fn();
23
+ const mockAnalyserReport = jest.fn();
24
+ const mockedSuccessCallback = jest.fn();
25
+ const mockedErrorCallback = jest.fn();
26
+ const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
27
+ const expectedDocumentsHeaders = {
28
+ headers: {
29
+ Accept: 'application/json',
30
+ Authorization: 'Bearer the_key',
31
+ 'Content-Type': 'application/json',
32
+ },
33
+ };
34
+ const doAxiosMockFileContainerResponse = () => ({
35
+ data: {
36
+ uploadUri: 'https://fake.upload.url',
37
+ fileId: 'file_id',
38
+ requiredHeaders: { foo: 'bar' },
39
+ },
40
+ });
41
+ const doAxiosMockPost = () => {
42
+ mockAxios.post.mockImplementationOnce((url) => {
43
+ if (url.match(/files/)) {
44
+ return Promise.resolve(doAxiosMockFileContainerResponse());
45
+ }
46
+ return Promise.resolve();
47
+ });
48
+ };
49
+ const doMockPlatformClient = () => {
50
+ mockedPlatformClient.mockImplementation(() => ({
51
+ privilegeEvaluator: { evaluate: mockEvaluate },
52
+ source: {
53
+ create: mockCreateSource,
54
+ },
55
+ field: {
56
+ createFields: mockCreateField,
57
+ },
58
+ }));
59
+ };
60
+ const doMockFieldAnalyser = () => {
61
+ mockedFieldAnalyser.mockImplementation(() => ({
62
+ add: mockAnalyserAdd,
63
+ report: mockAnalyserReport,
64
+ }));
65
+ };
66
+ describe('CatalogSource - Push', () => {
67
+ let source;
68
+ let batch;
69
+ beforeAll(() => {
70
+ doMockPlatformClient();
71
+ doMockFieldAnalyser();
72
+ });
73
+ beforeEach(() => {
74
+ mockEvaluate.mockResolvedValue({ approved: true });
75
+ source = new catalog_1.CatalogSource('the_key', 'the_org');
76
+ batch = {
77
+ addOrUpdate: [
78
+ new documentBuilder_1.DocumentBuilder('the_uri_1', 'the_title_1'),
79
+ new documentBuilder_1.DocumentBuilder('the_uri_2', 'the_title_2'),
80
+ ],
81
+ delete: [{ documentId: 'the_uri_3', deleteChildren: true }],
82
+ };
83
+ });
84
+ it('should call platform client on creation', () => {
85
+ source.create('the_name', platform_client_1.SourceVisibility.SHARED);
86
+ expect(mockCreateSource).toHaveBeenCalledWith({
87
+ name: 'the_name',
88
+ streamEnabled: true,
89
+ sourceType: 'CATALOG',
90
+ sourceVisibility: 'SHARED',
91
+ });
92
+ });
93
+ describe('when doing batch update', () => {
94
+ beforeEach(() => {
95
+ doAxiosMockPost();
96
+ });
97
+ it('should create a file container', async () => {
98
+ await source.batchUpdateDocuments('the_id', batch, {
99
+ createFields: false,
100
+ });
101
+ expect(mockAxios.post).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/files', expect.objectContaining({}), expectedDocumentsHeaders);
102
+ });
103
+ it('should upload files to container with returned upload uri and required headers ', async () => {
104
+ await source.batchUpdateDocuments('the_id', batch, {
105
+ createFields: false,
106
+ });
107
+ expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
108
+ addOrUpdate: expect.arrayContaining([
109
+ expect.objectContaining({ documentId: 'the_uri_1' }),
110
+ expect.objectContaining({ documentId: 'the_uri_2' }),
111
+ ]),
112
+ delete: expect.arrayContaining([
113
+ expect.objectContaining({ documentId: 'the_uri_3' }),
114
+ ]),
115
+ }), { headers: { foo: 'bar' } });
116
+ });
117
+ it('should push content to source with returned fileId', async () => {
118
+ await source.batchUpdateDocuments('the_id', batch, {
119
+ createFields: false,
120
+ });
121
+ expect(mockAxios.put).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/update?fileId=file_id', {}, expectedDocumentsHeaders);
122
+ });
123
+ });
124
+ describe('when doing batch update from local files', () => {
125
+ afterAll(() => {
126
+ mockAxios.post.mockReset();
127
+ });
128
+ beforeEach(() => {
129
+ doAxiosMockPost();
130
+ });
131
+ it('should upload documents from local file', async () => {
132
+ await source
133
+ .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
134
+ .batch();
135
+ expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
136
+ addOrUpdate: expect.arrayContaining([
137
+ expect.objectContaining({
138
+ documentId: 'https://www.themoviedb.org/movie/268',
139
+ }),
140
+ expect.objectContaining({
141
+ documentId: 'https://www.themoviedb.org/movie/999',
142
+ }),
143
+ ]),
144
+ delete: expect.arrayContaining([]),
145
+ }), {
146
+ headers: {
147
+ foo: 'bar',
148
+ },
149
+ });
150
+ });
151
+ it('should throw an error if the path is invalid', () => {
152
+ expect(() => source
153
+ .batchUpdateDocumentsFromFiles('the_id', ['path/to/invalid/document'], { createFields: false })
154
+ .batch()).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
155
+ });
156
+ it('should call the callback without error when uploading documents', async () => {
157
+ await source
158
+ .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
159
+ .onBatchError(mockedErrorCallback)
160
+ .batch();
161
+ expect(mockedErrorCallback).not.toHaveBeenCalled();
162
+ });
163
+ it('should only push JSON files', async () => {
164
+ await source
165
+ .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
166
+ .onBatchUpload(mockedSuccessCallback)
167
+ .batch();
168
+ expect(mockedSuccessCallback).toHaveBeenCalledWith(expect.objectContaining({ files: ['valid.json'] }));
169
+ });
170
+ it('should call the errorCallback on a failure from the API', async () => {
171
+ mockAxios.post.mockReset();
172
+ mockAxios.post.mockRejectedValue({ message: 'Error Message' });
173
+ await source
174
+ .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
175
+ .onBatchError(mockedErrorCallback)
176
+ .batch();
177
+ expect(mockedErrorCallback).toHaveBeenCalledWith({
178
+ message: 'Error Message',
179
+ }, expect.anything());
180
+ });
181
+ });
182
+ describe('when enabling auto field creation', () => {
183
+ beforeEach(() => {
184
+ doAxiosMockPost();
185
+ });
186
+ describe('when there are no inconsistencies', () => {
187
+ beforeEach(() => {
188
+ const inconsistencies = new inconsistencies_1.Inconsistencies();
189
+ mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
190
+ });
191
+ it('should analyse document builder batch', async () => {
192
+ await source.batchUpdateDocuments('the_id', batch);
193
+ expect(mockAnalyserAdd).toHaveBeenCalledWith(batch.addOrUpdate);
194
+ });
195
+ });
196
+ describe('when document batches contain type inconsistencies', () => {
197
+ beforeEach(() => {
198
+ const inconsistencies = new inconsistencies_1.Inconsistencies().add('foo', [
199
+ platform_client_1.FieldTypes.STRING,
200
+ platform_client_1.FieldTypes.DOUBLE,
201
+ ]);
202
+ mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
203
+ });
204
+ it('should throw', () => {
205
+ expect(() => source.batchUpdateDocuments('the_id', batch)).rejects.toThrow(fieldErrors_1.FieldTypeInconsistencyError);
206
+ });
207
+ });
208
+ describe('when document batches contain missing fields', () => {
209
+ beforeEach(() => {
210
+ const inconsistencies = new inconsistencies_1.Inconsistencies();
211
+ mockAnalyserReport.mockReturnValueOnce({
212
+ fields: [
213
+ { name: 'stringfield', type: platform_client_1.FieldTypes.STRING },
214
+ { name: 'numericalfield', type: platform_client_1.FieldTypes.DOUBLE },
215
+ ],
216
+ inconsistencies,
217
+ });
218
+ });
219
+ it('should create fields', async () => {
220
+ await source.batchUpdateDocuments('the_id', batch);
221
+ expect(mockCreateField).toHaveBeenCalledWith([
222
+ { name: 'stringfield', type: platform_client_1.FieldTypes.STRING },
223
+ { name: 'numericalfield', type: platform_client_1.FieldTypes.DOUBLE },
224
+ ]);
225
+ });
226
+ });
227
+ describe('when document batches do not contain missing fields', () => {
228
+ beforeEach(() => {
229
+ const inconsistencies = new inconsistencies_1.Inconsistencies();
230
+ mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
231
+ });
232
+ it('should not create fields', async () => {
233
+ source.batchUpdateDocuments('the_id', batch);
234
+ expect(mockCreateField).not.toHaveBeenCalled();
235
+ });
236
+ });
237
+ });
238
+ });
239
+ //# sourceMappingURL=catalog.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.spec.js","sourceRoot":"","sources":["../../src/source/catalog.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable node/no-unpublished-import */
4
+ jest.mock('@coveord/platform-client');
5
+ jest.mock('axios');
6
+ jest.mock('../fieldAnalyser/fieldAnalyser');
7
+ const platform_client_1 = require("@coveord/platform-client");
8
+ const axios_1 = require("axios");
9
+ const path_1 = require("path");
10
+ const process_1 = require("process");
11
+ const catalog_1 = require("./catalog");
12
+ const __1 = require("..");
13
+ const mockAxios = axios_1.default;
14
+ const mockedFieldAnalyser = jest.mocked(__1.FieldAnalyser);
15
+ const mockedPlatformClient = jest.mocked(platform_client_1.default);
16
+ const mockCreateSource = jest.fn();
17
+ const mockCreateField = jest.fn();
18
+ const mockEvaluate = jest.fn();
19
+ const mockAnalyserAdd = jest.fn();
20
+ const mockAnalyserReport = jest.fn();
21
+ const mockedSuccessCallback = jest.fn();
22
+ const mockedErrorCallback = jest.fn();
23
+ const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
24
+ const expectedDocumentsHeaders = {
25
+ headers: {
26
+ Accept: 'application/json',
27
+ Authorization: 'Bearer the_key',
28
+ 'Content-Type': 'application/json',
29
+ },
30
+ };
31
+ const doAxiosMockFileContainerResponse = () => ({
32
+ data: {
33
+ uploadUri: 'https://fake.upload.url',
34
+ fileId: 'file_id',
35
+ requiredHeaders: { foo: 'bar' },
36
+ },
37
+ });
38
+ const doAxiosMockOpenStream = () => ({
39
+ data: {
40
+ streamId: 'the_stream_id',
41
+ },
42
+ });
43
+ const doMockPlatformClient = () => {
44
+ mockedPlatformClient.mockImplementation(() => ({
45
+ privilegeEvaluator: { evaluate: mockEvaluate },
46
+ source: {
47
+ create: mockCreateSource,
48
+ },
49
+ field: {
50
+ createFields: mockCreateField,
51
+ },
52
+ }));
53
+ };
54
+ const doMockFieldAnalyser = () => {
55
+ mockedFieldAnalyser.mockImplementation(() => ({
56
+ add: mockAnalyserAdd,
57
+ report: mockAnalyserReport,
58
+ }));
59
+ };
60
+ const mockAxiosForStreamCalls = () => {
61
+ mockAxios.post.mockImplementation((url) => {
62
+ if (url.match(/chunk/)) {
63
+ return Promise.resolve(doAxiosMockFileContainerResponse());
64
+ }
65
+ if (url.match(/stream\/open/)) {
66
+ return Promise.resolve(doAxiosMockOpenStream());
67
+ }
68
+ return Promise.resolve({ data: {} });
69
+ });
70
+ };
71
+ const basicStreamExpectations = () => {
72
+ it('should open a stream', async () => {
73
+ expect(mockAxios.post).toHaveReturnedTimes(3);
74
+ });
75
+ it('should open a stream', async () => {
76
+ expect(mockAxios.post).toHaveBeenNthCalledWith(1, 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/open', {}, expectedDocumentsHeaders);
77
+ });
78
+ it('should request a stream chunk', async () => {
79
+ expect(mockAxios.post).toHaveBeenNthCalledWith(2, 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/the_stream_id/chunk', {}, expectedDocumentsHeaders);
80
+ });
81
+ it('should close a stream', async () => {
82
+ expect(mockAxios.post).toHaveBeenNthCalledWith(3, 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/the_stream_id/close', {}, expectedDocumentsHeaders);
83
+ });
84
+ };
85
+ describe('CatalogSource - Stream', () => {
86
+ let source;
87
+ beforeAll(() => {
88
+ doMockPlatformClient();
89
+ doMockFieldAnalyser();
90
+ });
91
+ beforeEach(() => {
92
+ mockEvaluate.mockResolvedValue({ approved: true });
93
+ source = new catalog_1.CatalogSource('the_key', 'the_org');
94
+ });
95
+ describe('when streaming data from a batch', () => {
96
+ beforeEach(async () => {
97
+ mockAxiosForStreamCalls();
98
+ await source
99
+ .batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
100
+ .batch();
101
+ });
102
+ afterAll(() => {
103
+ mockAxios.post.mockReset();
104
+ });
105
+ basicStreamExpectations();
106
+ it('should upload content to stream chunk', async () => {
107
+ expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
108
+ addOrUpdate: expect.arrayContaining([
109
+ expect.objectContaining({
110
+ documentId: 'https://www.themoviedb.org/movie/268',
111
+ }),
112
+ expect.objectContaining({
113
+ documentId: 'https://www.themoviedb.org/movie/999',
114
+ }),
115
+ ]),
116
+ delete: expect.arrayContaining([]),
117
+ }), {
118
+ headers: {
119
+ foo: 'bar',
120
+ },
121
+ });
122
+ });
123
+ });
124
+ describe('when streaming data from local files', () => {
125
+ beforeEach(async () => {
126
+ mockAxiosForStreamCalls();
127
+ });
128
+ afterAll(() => {
129
+ mockAxios.post.mockReset();
130
+ });
131
+ describe('API call expectations', () => {
132
+ beforeEach(async () => {
133
+ mockAxiosForStreamCalls();
134
+ await source
135
+ .batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
136
+ .batch();
137
+ });
138
+ basicStreamExpectations();
139
+ it('should upload documents from local file', async () => {
140
+ expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
141
+ addOrUpdate: expect.arrayContaining([
142
+ expect.objectContaining({
143
+ documentId: 'https://www.themoviedb.org/movie/268',
144
+ }),
145
+ expect.objectContaining({
146
+ documentId: 'https://www.themoviedb.org/movie/999',
147
+ }),
148
+ ]),
149
+ delete: expect.arrayContaining([]),
150
+ }), {
151
+ headers: {
152
+ foo: 'bar',
153
+ },
154
+ });
155
+ });
156
+ });
157
+ it('should call the callback without error when uploading documents', async () => {
158
+ await source
159
+ .batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
160
+ .onBatchError(mockedErrorCallback)
161
+ .batch();
162
+ expect(mockedErrorCallback).not.toHaveBeenCalled();
163
+ });
164
+ it('should only push JSON files', async () => {
165
+ await source
166
+ .batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
167
+ .onBatchUpload(mockedSuccessCallback)
168
+ .batch();
169
+ expect(mockedSuccessCallback).toHaveBeenCalledWith(expect.objectContaining({ files: ['valid.json'] }));
170
+ });
171
+ it('should call the errorCallback on a failure from the API', async () => {
172
+ mockAxios.post.mockReset();
173
+ mockAxios.post.mockRejectedValue({ message: 'Error Message' });
174
+ await source
175
+ .batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
176
+ .onBatchError(mockedErrorCallback)
177
+ .batch();
178
+ expect(mockedErrorCallback).toHaveBeenCalledWith({
179
+ message: 'Error Message',
180
+ }, expect.anything());
181
+ });
182
+ it('should throw an error if the path is invalid', () => {
183
+ expect(() => source
184
+ .batchStreamDocumentsFromFiles('the_id', ['path/to/invalid/document'], { createFields: false })
185
+ .batch()).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
186
+ });
187
+ });
188
+ });
189
+ //# sourceMappingURL=catalog.stream.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.stream.spec.js","sourceRoot":"","sources":["../../src/source/catalog.stream.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadBatch = void 0;
4
+ const __1 = require("..");
5
+ const fieldErrors_1 = require("../errors/fieldErrors");
6
+ const fieldUtils_1 = require("../fieldAnalyser/fieldUtils");
7
+ async function uploadBatch(platformClient, strategy, batch, createFields = true) {
8
+ var _a;
9
+ if (createFields) {
10
+ const analyser = new __1.FieldAnalyser(platformClient);
11
+ await analyser.add(batch.addOrUpdate);
12
+ const { fields, inconsistencies } = analyser.report();
13
+ if (inconsistencies.size > 0) {
14
+ throw new fieldErrors_1.FieldTypeInconsistencyError(inconsistencies);
15
+ }
16
+ await (0, fieldUtils_1.createFields)(platformClient, fields);
17
+ }
18
+ const res = await strategy.upload(batch);
19
+ await ((_a = strategy.postUpload) === null || _a === void 0 ? void 0 : _a.call(strategy));
20
+ return res;
21
+ }
22
+ exports.uploadBatch = uploadBatch;
23
+ //# sourceMappingURL=documentUploader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentUploader.js","sourceRoot":"","sources":["../../src/source/documentUploader.ts"],"names":[],"mappings":";;;AAEA,0BAAiC;AACjC,uDAAkE;AAClE,4DAAmE;AAI5D,KAAK,UAAU,WAAW,CAC/B,cAA8B,EAC9B,QAAwB,EACxB,KAA2B,EAC3B,YAAY,GAAG,IAAI;;IAEnB,IAAI,YAAY,EAAE;QAChB,MAAM,QAAQ,GAAG,IAAI,iBAAa,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,EAAC,MAAM,EAAE,eAAe,EAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEpD,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE;YAC5B,MAAM,IAAI,yCAA2B,CAAC,eAAe,CAAC,CAAC;SACxD;QAED,MAAM,IAAA,yBAAM,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;KACtC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,CAAA,MAAA,QAAQ,CAAC,UAAU,wDAAI,CAAA,CAAC;IAE9B,OAAO,GAAG,CAAC;AACb,CAAC;AArBD,kCAqBC"}