@coveo/push-api-client 2.6.4 → 2.6.6

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 (64) hide show
  1. package/dist/definitions/{source/catalog.stream.spec.d.ts → help/urlUtils.spec.d.ts} +0 -0
  2. package/dist/definitions/source/batchUploadDocumentsFromFile.spec.d.ts +1 -0
  3. package/dist/definitions/source/documentUploader.spec.d.ts +1 -0
  4. package/dist/definitions/uploadStrategy/fileContainerStrategy.spec.d.ts +1 -0
  5. package/dist/definitions/uploadStrategy/streamChunkStrategy.spec.d.ts +1 -0
  6. package/dist/docs/classes/AnySecurityIdentityBuilder.html +4 -4
  7. package/dist/docs/classes/CatalogSource.html +16 -16
  8. package/dist/docs/classes/DocumentBuilder.html +28 -28
  9. package/dist/docs/classes/FieldAnalyser.html +12 -12
  10. package/dist/docs/classes/GroupSecurityIdentityBuilder.html +5 -5
  11. package/dist/docs/classes/PushSource.html +24 -24
  12. package/dist/docs/classes/UserSecurityIdentityBuilder.html +5 -5
  13. package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +5 -5
  14. package/dist/docs/classes/errors.FieldTypeInconsistencyError.html +3 -3
  15. package/dist/docs/classes/errors.InvalidDocument.html +3 -3
  16. package/dist/docs/classes/errors.InvalidPermanentId.html +3 -3
  17. package/dist/docs/classes/errors.NotAFileError.html +3 -3
  18. package/dist/docs/classes/errors.NotAJsonFileError.html +3 -3
  19. package/dist/docs/classes/errors.PrivilegeError.html +4 -4
  20. package/dist/docs/classes/errors.UnsupportedAttribute.html +3 -3
  21. package/dist/docs/classes/errors.UnsupportedFieldError.html +6 -6
  22. package/dist/docs/enums/PlatformEnvironment.html +5 -5
  23. package/dist/docs/functions/parseAndGetDocumentBuilderFromJSONDocument.html +1 -1
  24. package/dist/docs/interfaces/BatchUpdateDocuments.html +3 -3
  25. package/dist/docs/interfaces/Document.html +14 -14
  26. package/dist/docs/interfaces/SecurityIdentity.html +4 -4
  27. package/dist/docs/interfaces/SecurityIdentityBuilder.html +2 -2
  28. package/dist/docs/interfaces/UploadBatchCallbackData.html +5 -5
  29. package/dist/docs/modules/errors.html +1 -1
  30. package/dist/docs/types/BatchUpdateDocumentsFromFiles.html +1 -1
  31. package/dist/docs/types/CompressionType.html +1 -1
  32. package/dist/docs/types/FailedUploadCallback.html +1 -1
  33. package/dist/docs/types/Metadata.html +1 -1
  34. package/dist/docs/types/MetadataValue.html +1 -1
  35. package/dist/docs/types/PlatformUrlOptions.html +1 -1
  36. package/dist/docs/types/SecurityIdentityType.html +1 -1
  37. package/dist/docs/types/SuccessfulUploadCallback.html +1 -1
  38. package/dist/docs/types/Transformer.html +1 -1
  39. package/dist/docs/variables/BuiltInTransformers.html +1 -1
  40. package/dist/docs/variables/Source.html +1 -1
  41. package/dist/fieldAnalyser/fieldAnalyser.spec.js +0 -1
  42. package/dist/fieldAnalyser/fieldAnalyser.spec.js.map +1 -1
  43. package/dist/fieldAnalyser/fieldsUtils.spec.js +35 -3
  44. package/dist/fieldAnalyser/fieldsUtils.spec.js.map +1 -1
  45. package/dist/help/urlUtils.spec.js +42 -0
  46. package/dist/help/urlUtils.spec.js.map +1 -0
  47. package/dist/source/batchUploadDocumentsFromFile.spec.js +146 -0
  48. package/dist/source/batchUploadDocumentsFromFile.spec.js.map +1 -0
  49. package/dist/source/catalog.spec.js +20 -199
  50. package/dist/source/catalog.spec.js.map +1 -1
  51. package/dist/source/documentUploader.spec.js +132 -0
  52. package/dist/source/documentUploader.spec.js.map +1 -0
  53. package/dist/source/push.spec.js +118 -269
  54. package/dist/source/push.spec.js.map +1 -1
  55. package/dist/uploadStrategy/fileContainerStrategy.spec.js +103 -0
  56. package/dist/uploadStrategy/fileContainerStrategy.spec.js.map +1 -0
  57. package/dist/uploadStrategy/streamChunkStrategy.spec.js +106 -0
  58. package/dist/uploadStrategy/streamChunkStrategy.spec.js.map +1 -0
  59. package/package.json +1 -1
  60. package/dist/__stub__/largeDocuments/documentGenerator.js +0 -22
  61. package/dist/__stub__/largeDocuments/documentGenerator.js.map +0 -1
  62. package/dist/definitions/__stub__/largeDocuments/documentGenerator.d.ts +0 -12
  63. package/dist/source/catalog.stream.spec.js +0 -238
  64. package/dist/source/catalog.stream.spec.js.map +0 -1
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ jest.mock('axios');
4
+ jest.mock('../fieldAnalyser/fieldAnalyser');
5
+ jest.mock('../fieldAnalyser/fieldUtils');
6
+ jest.mock('./batchUploadDocumentsFromFile');
7
+ const platform_client_1 = require("@coveo/platform-client");
8
+ const __1 = require("..");
9
+ const fieldAnalyser_1 = require("../fieldAnalyser/fieldAnalyser");
10
+ const fieldUtils_1 = require("../fieldAnalyser/fieldUtils");
11
+ const function_1 = require("../help/function");
12
+ const batchUploadDocumentsFromFile_1 = require("./batchUploadDocumentsFromFile");
13
+ const transformer_1 = require("../validation/transformers/transformer");
14
+ const documentUploader_1 = require("./documentUploader");
15
+ const axios_1 = require("axios");
16
+ const axiosSpy = jest.spyOn(axios_1.default, 'put');
17
+ const dummyClient = new platform_client_1.default({ accessToken: 'my_token' });
18
+ const dummyStrategy = {
19
+ upload: jest.fn(),
20
+ preUpload: jest.fn(),
21
+ postUpload: jest.fn(),
22
+ };
23
+ const expectedDocumentsHeaders = {
24
+ headers: {
25
+ Accept: 'application/json',
26
+ Authorization: 'Bearer the_key',
27
+ 'Content-Type': 'application/json',
28
+ },
29
+ };
30
+ describe('documentUploader', () => {
31
+ describe('#uploadDocument', () => {
32
+ const upload = (options) => (0, documentUploader_1.uploadDocument)(dummyClient, new __1.DocumentBuilder('http://some.url', 'Some document'), new URL('https://fake.upload.url'), expectedDocumentsHeaders, options);
33
+ it('should get field report from FieldAnalyser', async () => {
34
+ await upload({ createFields: true });
35
+ expect(fieldAnalyser_1.FieldAnalyser.prototype.report).toHaveBeenCalled();
36
+ });
37
+ it('should create missing fields from report', async () => {
38
+ await upload({ createFields: true });
39
+ expect(fieldUtils_1.createFieldsFromReport).toHaveBeenCalled();
40
+ });
41
+ it('should not create missing fields', async () => {
42
+ await upload({ createFields: false });
43
+ expect(fieldUtils_1.createFieldsFromReport).not.toHaveBeenCalled();
44
+ });
45
+ it('should upload document', async () => {
46
+ await upload();
47
+ expect(axiosSpy).toBeCalledWith('https://fake.upload.url/?documentId=http%3A%2F%2Fsome.url', expect.objectContaining({
48
+ documentId: 'http://some.url',
49
+ title: 'Some document',
50
+ }), {
51
+ headers: {
52
+ Accept: 'application/json',
53
+ Authorization: 'Bearer the_key',
54
+ 'Content-Type': 'application/json',
55
+ },
56
+ });
57
+ });
58
+ });
59
+ describe('#uploadBatch', () => {
60
+ const batch = {
61
+ addOrUpdate: [new __1.DocumentBuilder('http://some.url', 'Some document')],
62
+ delete: [{ documentId: 'foo_bar', deleteChildren: true }],
63
+ };
64
+ const upload = (options) => (0, documentUploader_1.uploadBatch)(dummyClient, dummyStrategy, batch, options);
65
+ it('should get field report from FieldAnalyser', async () => {
66
+ await upload({ createFields: true });
67
+ expect(fieldAnalyser_1.FieldAnalyser.prototype.report).toHaveBeenCalled();
68
+ });
69
+ it('should create missing fields from report', async () => {
70
+ await upload({ createFields: true });
71
+ expect(fieldUtils_1.createFieldsFromReport).toHaveBeenCalled();
72
+ });
73
+ it('should not create missing fields', async () => {
74
+ await upload({ createFields: false });
75
+ expect(fieldUtils_1.createFieldsFromReport).not.toHaveBeenCalled();
76
+ });
77
+ it('should execute the pre-upload strategy logic', async () => {
78
+ await upload();
79
+ expect(dummyStrategy.preUpload).toHaveBeenCalled();
80
+ });
81
+ it('should execute the upload strategy logic', async () => {
82
+ await upload();
83
+ expect(dummyStrategy.upload).toHaveBeenCalledWith({
84
+ addOrUpdate: [
85
+ expect.objectContaining({
86
+ uri: 'http://some.url',
87
+ }),
88
+ ],
89
+ delete: [
90
+ {
91
+ deleteChildren: true,
92
+ documentId: 'foo_bar',
93
+ },
94
+ ],
95
+ });
96
+ });
97
+ it('should execute the post-upload strategy logic', async () => {
98
+ await upload();
99
+ expect(dummyStrategy.postUpload).toHaveBeenCalled();
100
+ });
101
+ });
102
+ describe('#uploadBatchFromFile', () => {
103
+ const dummyCallback = jest.fn();
104
+ it('should call BatchUploadDocumentsFromFilesReturn with default options', async () => {
105
+ await (0, documentUploader_1.uploadBatchFromFile)(dummyClient, dummyStrategy, [
106
+ 'path/to/file',
107
+ 'other/path',
108
+ ]);
109
+ expect(batchUploadDocumentsFromFile_1.BatchUploadDocumentsFromFilesReturn).toHaveBeenCalledWith(dummyClient, dummyStrategy, ['path/to/file', 'other/path'], {
110
+ callback: function_1.noop,
111
+ createFields: true,
112
+ fieldNameTransformer: transformer_1.BuiltInTransformers.identity,
113
+ maxConcurrent: 10,
114
+ });
115
+ });
116
+ it('should call BatchUploadDocumentsFromFilesReturn with custom options', async () => {
117
+ await (0, documentUploader_1.uploadBatchFromFile)(dummyClient, dummyStrategy, ['path/to/file', 'other/path'], {
118
+ createFields: false,
119
+ maxConcurrent: 3,
120
+ fieldNameTransformer: transformer_1.BuiltInTransformers.toLowerCase,
121
+ callback: dummyCallback,
122
+ });
123
+ expect(batchUploadDocumentsFromFile_1.BatchUploadDocumentsFromFilesReturn).toHaveBeenCalledWith(dummyClient, dummyStrategy, ['path/to/file', 'other/path'], {
124
+ callback: dummyCallback,
125
+ createFields: false,
126
+ fieldNameTransformer: transformer_1.BuiltInTransformers.toLowerCase,
127
+ maxConcurrent: 3,
128
+ });
129
+ });
130
+ });
131
+ });
132
+ //# sourceMappingURL=documentUploader.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentUploader.spec.js","sourceRoot":"","sources":["../../src/source/documentUploader.spec.ts"],"names":[],"mappings":";;AAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AAC5C,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACzC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AAE5C,4DAAoD;AACpD,0BAAmC;AACnC,kEAA6D;AAC7D,4DAAmE;AACnE,+CAAsC;AAGtC,iFAAmF;AACnF,wEAA2E;AAC3E,yDAI4B;AAC5B,iCAA0B;AAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,KAAK,CAAC,CAAC;AAE1C,MAAM,WAAW,GAAG,IAAI,yBAAc,CAAC,EAAC,WAAW,EAAE,UAAU,EAAC,CAAC,CAAC;AAClE,MAAM,aAAa,GAAmB;IACpC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;IACjB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;CACtB,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACP,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,gBAAgB;QAC/B,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,CAAC,OAAqC,EAAE,EAAE,CACvD,IAAA,iCAAc,EACZ,WAAW,EACX,IAAI,mBAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,EACvD,IAAI,GAAG,CAAC,yBAAyB,CAAC,EAClC,wBAAwB,EACxB,OAAO,CACR,CAAC;QAEJ,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,CAAC,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;YACnC,MAAM,CAAC,6BAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,CAAC,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;YACnC,MAAM,CAAC,mCAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACpC,MAAM,CAAC,mCAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAC7B,2DAA2D,EAC3D,MAAM,CAAC,gBAAgB,CAAC;gBACtB,UAAU,EAAE,iBAAiB;gBAC7B,KAAK,EAAE,eAAe;aACvB,CAAC,EACF;gBACE,OAAO,EAAE;oBACP,MAAM,EAAE,kBAAkB;oBAC1B,aAAa,EAAE,gBAAgB;oBAC/B,cAAc,EAAE,kBAAkB;iBACnC;aACF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,KAAK,GAAyB;YAClC,WAAW,EAAE,CAAC,IAAI,mBAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC,EAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAC,CAAC;SACxD,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,OAAqC,EAAE,EAAE,CACvD,IAAA,8BAAW,EAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE1D,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,CAAC,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;YACnC,MAAM,CAAC,6BAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,CAAC,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;YACnC,MAAM,CAAC,mCAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACpC,MAAM,CAAC,mCAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;gBAChD,WAAW,EAAE;oBACX,MAAM,CAAC,gBAAgB,CAAC;wBACtB,GAAG,EAAE,iBAAiB;qBACvB,CAAC;iBACH;gBACD,MAAM,EAAE;oBACN;wBACE,cAAc,EAAE,IAAI;wBACpB,UAAU,EAAE,SAAS;qBACtB;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEhC,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,IAAA,sCAAmB,EAAC,WAAW,EAAE,aAAa,EAAE;gBACpD,cAAc;gBACd,YAAY;aACb,CAAC,CAAC;YACH,MAAM,CAAC,kEAAmC,CAAC,CAAC,oBAAoB,CAC9D,WAAW,EACX,aAAa,EACb,CAAC,cAAc,EAAE,YAAY,CAAC,EAC9B;gBACE,QAAQ,EAAE,eAAI;gBACd,YAAY,EAAE,IAAI;gBAClB,oBAAoB,EAAE,iCAAmB,CAAC,QAAQ;gBAClD,aAAa,EAAE,EAAE;aAClB,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,IAAA,sCAAmB,EACvB,WAAW,EACX,aAAa,EACb,CAAC,cAAc,EAAE,YAAY,CAAC,EAC9B;gBACE,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,CAAC;gBAChB,oBAAoB,EAAE,iCAAmB,CAAC,WAAW;gBACrD,QAAQ,EAAE,aAAa;aACxB,CACF,CAAC;YACF,MAAM,CAAC,kEAAmC,CAAC,CAAC,oBAAoB,CAC9D,WAAW,EACX,aAAa,EACb,CAAC,cAAc,EAAE,YAAY,CAAC,EAC9B;gBACE,QAAQ,EAAE,aAAa;gBACvB,YAAY,EAAE,KAAK;gBACnB,oBAAoB,EAAE,iCAAmB,CAAC,WAAW;gBACrD,aAAa,EAAE,CAAC;aACjB,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,82 +2,58 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  /* eslint-disable node/no-unpublished-import */
4
4
  jest.mock('@coveo/platform-client');
5
+ jest.mock('./documentUploader');
6
+ jest.mock('../uploadStrategy');
5
7
  jest.mock('axios');
6
- jest.mock('../fieldAnalyser/fieldAnalyser');
7
8
  const platform_client_1 = require("@coveo/platform-client");
8
9
  const push_1 = require("./push");
9
10
  const documentBuilder_1 = require("../documentBuilder");
10
- const axios_1 = require("axios");
11
11
  const path_1 = require("path");
12
12
  const process_1 = require("process");
13
13
  const __1 = require("..");
14
- const inconsistencies_1 = require("../fieldAnalyser/inconsistencies");
15
- const fieldErrors_1 = require("../errors/fieldErrors");
16
- const mockAxios = axios_1.default;
17
- const mockedFieldAnalyser = jest.mocked(__1.FieldAnalyser);
14
+ const axios_1 = require("axios");
15
+ const documentUploader_1 = require("./documentUploader");
16
+ const uploadStrategy_1 = require("../uploadStrategy");
17
+ const urlUtils_1 = require("../help/urlUtils");
18
+ const mockedAxios = jest.mocked(axios_1.default);
19
+ const mockedDelete = jest.fn();
20
+ const mockedPost = jest.fn();
18
21
  const mockedPlatformClient = jest.mocked(platform_client_1.default);
19
22
  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();
23
+ const mockedUploadDocument = jest.mocked(documentUploader_1.uploadDocument);
24
+ const mockedUploadBatch = jest.mocked(documentUploader_1.uploadBatch);
25
+ const mockedUploadBatchFromFile = jest.mocked(documentUploader_1.uploadBatchFromFile);
26
26
  const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
27
- const doAxiosMockPost = () => {
28
- mockAxios.post.mockImplementationOnce((url) => {
29
- if (url.match(/files/)) {
30
- return Promise.resolve({
31
- data: {
32
- uploadUri: 'https://fake.upload.url',
33
- fileId: 'file_id',
34
- requiredHeaders: { foo: 'bar' },
35
- },
36
- });
37
- }
38
- return Promise.resolve();
39
- });
27
+ const requestHeader = {
28
+ headers: {
29
+ Accept: 'application/json',
30
+ Authorization: 'Bearer the_key',
31
+ 'Content-Type': 'application/json',
32
+ },
40
33
  };
41
- const doMockAxiosPut = () => {
42
- mockAxios.put.mockImplementation(() => Promise.resolve());
34
+ const dummyClient = {
35
+ source: {
36
+ create: mockCreateSource,
37
+ },
43
38
  };
44
39
  const doMockPlatformClient = () => {
45
- mockedPlatformClient.mockImplementation(() => ({
46
- privilegeEvaluator: { evaluate: mockEvaluate },
47
- source: {
48
- create: mockCreateSource,
49
- },
50
- field: {
51
- createFields: mockCreateField,
52
- },
53
- }));
40
+ mockedPlatformClient.mockImplementation(() => dummyClient);
54
41
  };
55
- const doMockFieldAnalyser = () => {
56
- mockedFieldAnalyser.mockImplementation(() => ({
57
- add: mockAnalyserAdd,
58
- report: mockAnalyserReport,
59
- }));
42
+ const doMockAxios = () => {
43
+ mockedAxios.delete = mockedDelete;
44
+ mockedAxios.post = mockedPost;
60
45
  };
61
46
  describe('PushSource', () => {
62
- let source;
47
+ let defaultSource;
63
48
  beforeAll(() => {
49
+ doMockAxios();
64
50
  doMockPlatformClient();
65
- doMockFieldAnalyser();
66
- doMockAxiosPut();
67
51
  });
68
52
  beforeEach(() => {
69
- source = new push_1.PushSource('the_key', 'the_org');
70
- mockEvaluate.mockResolvedValue({ approved: true });
53
+ defaultSource = new push_1.PushSource('the_key', 'the_org');
71
54
  });
72
- const expectedDocumentsHeaders = {
73
- headers: {
74
- Accept: 'application/json',
75
- Authorization: 'Bearer the_key',
76
- 'Content-Type': 'application/json',
77
- },
78
- };
79
55
  it('should call platform client on creation', () => {
80
- source.create('the_name', platform_client_1.SourceVisibility.SHARED);
56
+ defaultSource.create('the_name', platform_client_1.SourceVisibility.SHARED);
81
57
  expect(mockCreateSource).toHaveBeenCalledWith({
82
58
  name: 'the_name',
83
59
  pushEnabled: true,
@@ -85,247 +61,120 @@ describe('PushSource', () => {
85
61
  sourceVisibility: 'SHARED',
86
62
  });
87
63
  });
88
- it('should call axios on add document', async () => {
89
- await source.addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
90
- expect(mockAxios.put).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
91
- });
92
- it('should call axios on add document with right region', async () => {
93
- const australianSource = new push_1.PushSource('the_key', 'the_org', {
94
- region: __1.Region.AU,
95
- });
96
- await australianSource.addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
97
- expect(mockAxios.put).toHaveBeenCalledWith('https://api-au.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
98
- });
99
- it('should call axios on add document with right environment', async () => {
100
- await new push_1.PushSource('the_key', 'the_org', {
101
- environment: __1.PlatformEnvironment.Dev,
102
- }).addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
103
- expect(mockAxios.put).toHaveBeenCalledWith('https://apidev.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
64
+ it.each([
65
+ {
66
+ title: 'default region/environment',
67
+ expectedUrl: 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents',
68
+ },
69
+ {
70
+ title: 'non default region',
71
+ options: {
72
+ region: __1.Region.AU,
73
+ },
74
+ expectedUrl: 'https://api-au.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents',
75
+ },
76
+ {
77
+ title: 'non default environment',
78
+ options: {
79
+ environment: __1.PlatformEnvironment.Dev,
80
+ },
81
+ expectedUrl: 'https://apidev.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents',
82
+ },
83
+ {
84
+ title: 'non default region/environment',
85
+ options: {
86
+ environment: __1.PlatformEnvironment.Stg,
87
+ region: __1.Region.EU,
88
+ },
89
+ expectedUrl: 'https://apistg-eu.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents',
90
+ },
91
+ ])('should call #uploadDocument with $title', async ({ options, expectedUrl }) => {
92
+ await new push_1.PushSource('the_key', 'the_org', options).addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'));
93
+ expect(mockedUploadDocument).toHaveBeenCalledWith(dummyClient, new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), new URL(expectedUrl), requestHeader, undefined);
104
94
  });
105
- it('should call axios on add document with right region and environment', async () => {
106
- await new push_1.PushSource('the_key', 'the_org', {
107
- environment: __1.PlatformEnvironment.Stg,
108
- region: __1.Region.EU,
109
- }).addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
110
- expect(mockAxios.put).toHaveBeenCalledWith('https://apistg-eu.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
95
+ it('should call #uploadDocument with right BatchUpdateDocumentsOptions', async () => {
96
+ await defaultSource.addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: true });
97
+ expect(mockedUploadDocument).toHaveBeenCalledWith(dummyClient, new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), new URL('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents'), requestHeader, { createFields: true });
111
98
  });
112
- it('should call axios on delete', () => {
113
- source.deleteDocument('the_id', 'the_uri', true);
114
- expect(mockAxios.delete).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri&deleteChildren=true', expectedDocumentsHeaders);
99
+ it('should do a delete request', () => {
100
+ defaultSource.deleteDocument('the_id', 'the_uri', true);
101
+ expect(mockedDelete).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri&deleteChildren=true', {
102
+ headers: {
103
+ Accept: 'application/json',
104
+ Authorization: 'Bearer the_key',
105
+ 'Content-Type': 'application/json',
106
+ },
107
+ });
115
108
  });
116
- it('should call axios on status update', () => {
117
- source.setSourceStatus('the_id', 'INCREMENTAL');
118
- expect(axios_1.default.post).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/status?statusType=INCREMENTAL', {}, expectedDocumentsHeaders);
109
+ it('should do a post request', () => {
110
+ defaultSource.setSourceStatus('the_id', 'INCREMENTAL');
111
+ expect(mockedPost).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/status?statusType=INCREMENTAL', {}, {
112
+ headers: {
113
+ Accept: 'application/json',
114
+ Authorization: 'Bearer the_key',
115
+ 'Content-Type': 'application/json',
116
+ },
117
+ });
119
118
  });
120
- describe('calls axios when doing delete olderthan', () => {
119
+ describe('when delete olderthan', () => {
121
120
  const expectCorrectOrderingId = (id) => {
122
- expect(mockAxios.delete).toHaveBeenCalledWith(`https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents/olderthan?orderingId=${id}`, expectedDocumentsHeaders);
121
+ expect(mockedDelete).toHaveBeenCalledWith(`https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents/olderthan?orderingId=${id}`, {
122
+ headers: {
123
+ Accept: 'application/json',
124
+ Authorization: 'Bearer the_key',
125
+ 'Content-Type': 'application/json',
126
+ },
127
+ });
123
128
  };
124
129
  it('with a date', () => {
125
130
  const now = new Date();
126
- source.deleteDocumentsOlderThan('the_id', now);
131
+ defaultSource.deleteDocumentsOlderThan('the_id', now);
127
132
  expectCorrectOrderingId(now.valueOf());
128
133
  });
129
134
  it('with a date string', () => {
130
- source.deleteDocumentsOlderThan('the_id', '2001/01/01');
135
+ defaultSource.deleteDocumentsOlderThan('the_id', '2001/01/01');
131
136
  expectCorrectOrderingId(new Date('2001/01/01').valueOf());
132
137
  });
133
138
  it('with a timestamp', () => {
134
139
  const nowInTimestamp = new Date().valueOf();
135
- source.deleteDocumentsOlderThan('the_id', nowInTimestamp);
140
+ defaultSource.deleteDocumentsOlderThan('the_id', nowInTimestamp);
136
141
  expectCorrectOrderingId(nowInTimestamp);
137
142
  });
138
143
  });
139
- it('should call axios on delete', () => {
140
- source.deleteDocument('the_id', 'the_uri', true);
141
- expect(mockAxios.delete).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri&deleteChildren=true', expectedDocumentsHeaders);
144
+ it('should do a delete requets', () => {
145
+ defaultSource.deleteDocument('the_id', 'the_uri', true);
146
+ expect(mockedDelete).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri&deleteChildren=true', {
147
+ headers: {
148
+ Accept: 'application/json',
149
+ Authorization: 'Bearer the_key',
150
+ 'Content-Type': 'application/json',
151
+ },
152
+ });
142
153
  });
143
154
  describe('when doing batch update', () => {
144
- let batch;
145
- beforeEach(() => {
146
- batch = {
147
- addOrUpdate: [
148
- new documentBuilder_1.DocumentBuilder('the_uri_1', 'the_title_1'),
149
- new documentBuilder_1.DocumentBuilder('the_uri_2', 'the_title_2'),
150
- ],
151
- delete: [{ documentId: 'the_uri_3', deleteChildren: true }],
152
- };
153
- doAxiosMockPost();
154
- });
155
- it('should create a file container', async () => {
156
- await source.batchUpdateDocuments('the_id', batch, {
157
- createFields: false,
158
- });
159
- expect(mockAxios.post).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/files', expect.objectContaining({}), expectedDocumentsHeaders);
160
- });
161
- it('should upload files to container with returned upload uri and required headers ', async () => {
162
- await source.batchUpdateDocuments('the_id', batch, {
155
+ const batch = {
156
+ addOrUpdate: [
157
+ new documentBuilder_1.DocumentBuilder('the_uri_1', 'the_title_1'),
158
+ new documentBuilder_1.DocumentBuilder('the_uri_2', 'the_title_2'),
159
+ ],
160
+ delete: [{ documentId: 'the_uri_3', deleteChildren: true }],
161
+ };
162
+ it('should call #uploadBatch', async () => {
163
+ await defaultSource.batchUpdateDocuments('the_id', batch, {
163
164
  createFields: false,
164
165
  });
165
- expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
166
- addOrUpdate: expect.arrayContaining([
167
- expect.objectContaining({ documentId: 'the_uri_1' }),
168
- expect.objectContaining({ documentId: 'the_uri_2' }),
169
- ]),
170
- delete: expect.arrayContaining([
171
- expect.objectContaining({ documentId: 'the_uri_3' }),
172
- ]),
173
- }), { headers: { foo: 'bar' }, maxBodyLength: 256e6 });
166
+ expect(mockedUploadBatch).toHaveBeenCalledWith(dummyClient, expect.any(uploadStrategy_1.FileContainerStrategy), batch, { createFields: false });
174
167
  });
175
- it('should push content to source with returned fileId', async () => {
176
- await source.batchUpdateDocuments('the_id', batch, {
177
- createFields: false,
178
- });
179
- expect(mockAxios.put).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents/batch?fileId=file_id', {}, expectedDocumentsHeaders);
168
+ it('should call #uploadBatch with the right strategy', async () => {
169
+ await defaultSource.batchUpdateDocuments('the_id', batch);
170
+ expect(uploadStrategy_1.FileContainerStrategy).toHaveBeenCalledWith(expect.any(urlUtils_1.PushUrlBuilder), requestHeader);
180
171
  });
181
172
  });
182
173
  describe('when doing batch update from local files', () => {
183
- afterAll(() => {
184
- mockAxios.post.mockReset();
185
- });
186
- beforeEach(() => {
187
- doAxiosMockPost();
188
- });
189
- it('should upload documents from local file', async () => {
190
- await source
191
- .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
192
- .batch();
193
- expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
194
- addOrUpdate: expect.arrayContaining([
195
- expect.objectContaining({
196
- documentId: 'https://www.themoviedb.org/movie/268',
197
- }),
198
- expect.objectContaining({
199
- documentId: 'https://www.themoviedb.org/movie/999',
200
- }),
201
- ]),
202
- delete: expect.arrayContaining([]),
203
- }), {
204
- headers: {
205
- foo: 'bar',
206
- },
207
- maxBodyLength: 256e6,
208
- });
209
- });
210
- it('should throw an error if the path is invalid', async () => {
211
- await expect(() => source
212
- .batchUpdateDocumentsFromFiles('the_id', ['path/to/invalid/document'], { createFields: false })
213
- .batch()).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
214
- });
215
- it('should call the callback without error when uploading documents', async () => {
216
- await source
217
- .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
218
- .onBatchError(mockedErrorCallback)
219
- .batch();
220
- expect(mockedErrorCallback).not.toHaveBeenCalled();
221
- });
222
- it('should only push JSON files', async () => {
223
- await source
224
- .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
225
- .onBatchUpload(mockedSuccessCallback)
226
- .batch();
227
- expect(mockedSuccessCallback).toHaveBeenCalledWith(expect.objectContaining({ files: ['valid.json'] }));
228
- });
229
- it('should call the errorCallback on a failure from the API', async () => {
230
- mockAxios.post.mockReset();
231
- mockAxios.post.mockRejectedValue({ message: 'Error Message' });
232
- await source
233
- .batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
234
- .onBatchError(mockedErrorCallback)
235
- .batch();
236
- expect(mockedErrorCallback).toHaveBeenCalledWith({
237
- message: 'Error Message',
238
- }, expect.anything());
239
- });
240
- });
241
- describe('when enabling auto field creation', () => {
242
- let source;
243
- let batch;
244
- beforeAll(() => {
245
- batch = {
246
- addOrUpdate: [
247
- new documentBuilder_1.DocumentBuilder('the_uri_1', 'the_title_1'),
248
- new documentBuilder_1.DocumentBuilder('the_uri_2', 'the_title_2'),
249
- ],
250
- delete: [],
251
- };
252
- });
253
- beforeEach(() => {
254
- doAxiosMockPost();
255
- source = new push_1.PushSource('the_key', 'the_org');
256
- });
257
- describe('when there are no inconsistencies', () => {
258
- beforeEach(() => {
259
- const inconsistencies = new inconsistencies_1.Inconsistencies();
260
- mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
261
- });
262
- it('should analyse document builder', async () => {
263
- const docBuilder = new documentBuilder_1.DocumentBuilder('the_uri', 'the_title');
264
- await source.addOrUpdateDocument('the_id', docBuilder);
265
- expect(mockAnalyserAdd).toHaveBeenCalledWith([docBuilder]);
266
- });
267
- it('should analyse document builder batch', async () => {
268
- await source.batchUpdateDocuments('the_id', batch);
269
- expect(mockAnalyserAdd).toHaveBeenCalledWith(batch.addOrUpdate);
270
- });
271
- });
272
- describe('when document batches contain type inconsistencies', () => {
273
- beforeEach(() => {
274
- const inconsistencies = new inconsistencies_1.Inconsistencies().add('foo', [
275
- platform_client_1.FieldTypes.STRING,
276
- platform_client_1.FieldTypes.DOUBLE,
277
- ]);
278
- mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
279
- });
280
- it('should throw', async () => {
281
- await expect(() => source.batchUpdateDocuments('the_id', batch)).rejects.toThrow(fieldErrors_1.FieldTypeInconsistencyError);
282
- });
283
- });
284
- describe('when document batches contain missing fields', () => {
285
- beforeEach(() => {
286
- const inconsistencies = new inconsistencies_1.Inconsistencies();
287
- mockAnalyserReport.mockReturnValueOnce({
288
- fields: [
289
- { name: 'stringfield', type: platform_client_1.FieldTypes.STRING },
290
- { name: 'numericalfield', type: platform_client_1.FieldTypes.DOUBLE },
291
- ],
292
- inconsistencies,
293
- });
294
- });
295
- it('should create fields', async () => {
296
- await source.batchUpdateDocuments('the_id', batch);
297
- expect(mockCreateField).toHaveBeenCalledWith([
298
- { name: 'stringfield', type: platform_client_1.FieldTypes.STRING },
299
- { name: 'numericalfield', type: platform_client_1.FieldTypes.DOUBLE },
300
- ]);
301
- });
302
- });
303
- describe('when document batches do not contain missing fields', () => {
304
- beforeEach(() => {
305
- const inconsistencies = new inconsistencies_1.Inconsistencies();
306
- mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
307
- });
308
- it('should not create fields', async () => {
309
- source.batchUpdateDocuments('the_id', batch);
310
- expect(mockCreateField).not.toHaveBeenCalled();
311
- });
312
- });
313
- describe('when field names should be transformed', () => {
314
- beforeEach(() => {
315
- const inconsistencies = new inconsistencies_1.Inconsistencies();
316
- mockAnalyserReport.mockReturnValueOnce({
317
- fields: [{ name: 'transformed_field', type: platform_client_1.FieldTypes.STRING }],
318
- inconsistencies,
319
- });
320
- });
321
- describe('when field normalization is enabled', () => {
322
- it('should create transformed fields', async () => {
323
- await source.batchUpdateDocuments('the_id', batch);
324
- expect(mockCreateField).toHaveBeenCalledWith([
325
- { name: 'transformed_field', type: platform_client_1.FieldTypes.STRING },
326
- ]);
327
- });
328
- });
174
+ it('should call #uploadBatchFromFile', async () => {
175
+ await defaultSource.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false });
176
+ expect(uploadStrategy_1.FileContainerStrategy).toHaveBeenCalledWith(expect.any(urlUtils_1.PushUrlBuilder), requestHeader);
177
+ expect(mockedUploadBatchFromFile).toHaveBeenCalledWith(dummyClient, expect.any(uploadStrategy_1.FileContainerStrategy), [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false });
329
178
  });
330
179
  });
331
180
  });
@@ -1 +1 @@
1
- {"version":3,"file":"push.spec.js","sourceRoot":"","sources":["../../src/source/push.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.spec.js","sourceRoot":"","sources":["../../src/source/push.spec.ts"],"names":[],"mappings":"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"}