@devrev/airsync-sdk 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +16 -0
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -0
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +9 -0
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -0
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.js +2 -0
- package/dist/attachments-streaming/attachments-streaming-pool.js +97 -0
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +2 -0
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +1 -0
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +267 -0
- package/dist/common/constants.d.ts +25 -0
- package/dist/common/constants.d.ts.map +1 -0
- package/dist/common/constants.js +58 -0
- package/dist/common/control-protocol.d.ts +10 -0
- package/dist/common/control-protocol.d.ts.map +1 -0
- package/dist/common/control-protocol.js +31 -0
- package/dist/common/errors.d.ts +6 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +4 -0
- package/dist/common/event-type-translation.d.ts +24 -0
- package/dist/common/event-type-translation.d.ts.map +1 -0
- package/dist/common/event-type-translation.js +117 -0
- package/dist/common/helpers.d.ts +41 -0
- package/dist/common/helpers.d.ts.map +1 -0
- package/dist/common/helpers.js +124 -0
- package/dist/common/install-initial-domain-mapping.d.ts +4 -0
- package/dist/common/install-initial-domain-mapping.d.ts.map +1 -0
- package/dist/common/install-initial-domain-mapping.js +58 -0
- package/dist/common/install-initial-domain-mapping.test.d.ts +2 -0
- package/dist/common/install-initial-domain-mapping.test.d.ts.map +1 -0
- package/dist/common/install-initial-domain-mapping.test.js +207 -0
- package/dist/deprecated/adapter/index.d.ts +62 -0
- package/dist/deprecated/adapter/index.d.ts.map +1 -0
- package/dist/deprecated/adapter/index.js +151 -0
- package/dist/deprecated/common/helpers.d.ts +7 -0
- package/dist/deprecated/common/helpers.d.ts.map +1 -0
- package/dist/deprecated/common/helpers.js +47 -0
- package/dist/deprecated/demo-extractor/external_domain_metadata.json +38 -0
- package/dist/deprecated/demo-extractor/index.d.ts +18 -0
- package/dist/deprecated/demo-extractor/index.d.ts.map +1 -0
- package/dist/deprecated/demo-extractor/index.js +161 -0
- package/dist/deprecated/http/client.d.ts +22 -0
- package/dist/deprecated/http/client.d.ts.map +1 -0
- package/dist/deprecated/http/client.js +161 -0
- package/dist/deprecated/uploader/index.d.ts +35 -0
- package/dist/deprecated/uploader/index.d.ts.map +1 -0
- package/dist/deprecated/uploader/index.js +161 -0
- package/dist/http/axios-client-internal.d.ts +3 -0
- package/dist/http/axios-client-internal.d.ts.map +1 -0
- package/dist/http/axios-client-internal.js +66 -0
- package/dist/http/axios-client-internal.test.d.ts +2 -0
- package/dist/http/axios-client-internal.test.d.ts.map +1 -0
- package/dist/http/axios-client-internal.test.js +154 -0
- package/dist/http/axios-client.d.ts +27 -0
- package/dist/http/axios-client.d.ts.map +1 -0
- package/dist/http/axios-client.js +57 -0
- package/dist/http/constants.d.ts +4 -0
- package/dist/http/constants.d.ts.map +1 -0
- package/dist/http/constants.js +6 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +18 -0
- package/dist/http/types.d.ts +17 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +2 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/logger/logger.constants.d.ts +6 -0
- package/dist/logger/logger.constants.d.ts.map +1 -0
- package/dist/logger/logger.constants.js +13 -0
- package/dist/logger/logger.context.d.ts +58 -0
- package/dist/logger/logger.context.d.ts.map +1 -0
- package/dist/logger/logger.context.js +86 -0
- package/dist/logger/logger.d.ts +89 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.interfaces.d.ts +43 -0
- package/dist/logger/logger.interfaces.d.ts.map +1 -0
- package/dist/logger/logger.interfaces.js +9 -0
- package/dist/logger/logger.js +196 -0
- package/dist/logger/logger.test.d.ts +2 -0
- package/dist/logger/logger.test.d.ts.map +1 -0
- package/dist/logger/logger.test.js +490 -0
- package/dist/mappers/mappers.d.ts +52 -0
- package/dist/mappers/mappers.d.ts.map +1 -0
- package/dist/mappers/mappers.interface.d.ts +294 -0
- package/dist/mappers/mappers.interface.d.ts.map +1 -0
- package/dist/mappers/mappers.interface.js +48 -0
- package/dist/mappers/mappers.js +83 -0
- package/dist/mappers/mappers.test.d.ts +2 -0
- package/dist/mappers/mappers.test.d.ts.map +1 -0
- package/dist/mappers/mappers.test.js +107 -0
- package/dist/multithreading/create-worker.d.ts +5 -0
- package/dist/multithreading/create-worker.d.ts.map +1 -0
- package/dist/multithreading/create-worker.js +28 -0
- package/dist/multithreading/create-worker.test.d.ts +2 -0
- package/dist/multithreading/create-worker.test.d.ts.map +1 -0
- package/dist/multithreading/create-worker.test.js +89 -0
- package/dist/multithreading/process-task.d.ts +3 -0
- package/dist/multithreading/process-task.d.ts.map +1 -0
- package/dist/multithreading/process-task.js +58 -0
- package/dist/multithreading/spawn/spawn.d.ts +30 -0
- package/dist/multithreading/spawn/spawn.d.ts.map +1 -0
- package/dist/multithreading/spawn/spawn.helpers.d.ts +21 -0
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -0
- package/dist/multithreading/spawn/spawn.helpers.js +114 -0
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts +2 -0
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +1 -0
- package/dist/multithreading/spawn/spawn.helpers.test.js +293 -0
- package/dist/multithreading/spawn/spawn.js +249 -0
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +2 -0
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +1 -0
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +127 -0
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts +91 -0
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +1 -0
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +22 -0
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +1 -0
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.js +64 -0
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +2 -0
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +1 -0
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +514 -0
- package/dist/multithreading/worker-adapter/worker-adapter.js +747 -0
- package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +2 -0
- package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +1 -0
- package/dist/multithreading/worker-adapter/worker-adapter.test.js +483 -0
- package/dist/multithreading/worker.d.ts +2 -0
- package/dist/multithreading/worker.d.ts.map +1 -0
- package/dist/multithreading/worker.js +9 -0
- package/dist/repo/repo.d.ts +18 -0
- package/dist/repo/repo.d.ts.map +1 -0
- package/dist/repo/repo.interfaces.d.ts +46 -0
- package/dist/repo/repo.interfaces.d.ts.map +1 -0
- package/dist/repo/repo.interfaces.js +2 -0
- package/dist/repo/repo.js +75 -0
- package/dist/repo/repo.test.d.ts +2 -0
- package/dist/repo/repo.test.d.ts.map +1 -0
- package/dist/repo/repo.test.js +131 -0
- package/dist/state/state.d.ts +30 -0
- package/dist/state/state.d.ts.map +1 -0
- package/dist/state/state.interfaces.d.ts +51 -0
- package/dist/state/state.interfaces.d.ts.map +1 -0
- package/dist/state/state.interfaces.js +21 -0
- package/dist/state/state.js +166 -0
- package/dist/state/state.test.d.ts +2 -0
- package/dist/state/state.test.d.ts.map +1 -0
- package/dist/state/state.test.js +224 -0
- package/dist/types/common.d.ts +50 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +25 -0
- package/dist/types/extraction.d.ts +417 -0
- package/dist/types/extraction.d.ts.map +1 -0
- package/dist/types/extraction.js +170 -0
- package/dist/types/extraction.test.d.ts +2 -0
- package/dist/types/extraction.test.d.ts.map +1 -0
- package/dist/types/extraction.test.js +70 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/loading.d.ts +147 -0
- package/dist/types/loading.d.ts.map +1 -0
- package/dist/types/loading.js +48 -0
- package/dist/types/workers.d.ts +161 -0
- package/dist/types/workers.d.ts.map +1 -0
- package/dist/types/workers.js +22 -0
- package/dist/uploader/uploader.d.ts +92 -0
- package/dist/uploader/uploader.d.ts.map +1 -0
- package/dist/uploader/uploader.helpers.d.ts +33 -0
- package/dist/uploader/uploader.helpers.d.ts.map +1 -0
- package/dist/uploader/uploader.helpers.js +139 -0
- package/dist/uploader/uploader.helpers.test.d.ts +2 -0
- package/dist/uploader/uploader.helpers.test.d.ts.map +1 -0
- package/dist/uploader/uploader.helpers.test.js +267 -0
- package/dist/uploader/uploader.interfaces.d.ts +95 -0
- package/dist/uploader/uploader.interfaces.d.ts.map +1 -0
- package/dist/uploader/uploader.interfaces.js +2 -0
- package/dist/uploader/uploader.js +305 -0
- package/dist/uploader/uploader.test.d.ts +2 -0
- package/dist/uploader/uploader.test.d.ts.map +1 -0
- package/dist/uploader/uploader.test.js +589 -0
- package/package.json +60 -0
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const loading_1 = require("../../types/loading");
|
|
4
|
+
const worker_adapter_helpers_1 = require("./worker-adapter.helpers");
|
|
5
|
+
describe(worker_adapter_helpers_1.getFilesToLoad.name, () => {
|
|
6
|
+
let statsFile;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
statsFile = [
|
|
9
|
+
{
|
|
10
|
+
id: 'test-artifact-1',
|
|
11
|
+
file_name: 'test_file_1.json.gz',
|
|
12
|
+
item_type: 'issues',
|
|
13
|
+
count: '79',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: 'test-artifact-2',
|
|
17
|
+
file_name: 'test_file_2.json.gz',
|
|
18
|
+
item_type: 'comments',
|
|
19
|
+
count: '1079',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 'test-artifact-3',
|
|
23
|
+
file_name: 'test_file_3.json.gz',
|
|
24
|
+
item_type: 'issues',
|
|
25
|
+
count: '1921',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'test-artifact-4',
|
|
29
|
+
file_name: 'test_file_4.json.gz',
|
|
30
|
+
item_type: 'comments',
|
|
31
|
+
count: '921',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'test-artifact-5',
|
|
35
|
+
file_name: 'test_file_5.json.gz',
|
|
36
|
+
item_type: 'attachments',
|
|
37
|
+
count: '50',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'test-artifact-6',
|
|
41
|
+
file_name: 'test_file_6.json.gz',
|
|
42
|
+
item_type: 'unknown',
|
|
43
|
+
count: '50',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'test-artifact-7',
|
|
47
|
+
file_name: 'test_file_7.json.gz',
|
|
48
|
+
item_type: 'issues',
|
|
49
|
+
count: '32',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
});
|
|
53
|
+
it('should filter files by supported item types and order them correctly', () => {
|
|
54
|
+
// Arrange
|
|
55
|
+
const itemTypesToLoad = [
|
|
56
|
+
{ itemType: 'attachments', create: jest.fn(), update: jest.fn() },
|
|
57
|
+
{ itemType: 'issues', create: jest.fn(), update: jest.fn() },
|
|
58
|
+
];
|
|
59
|
+
const expectedResult = [
|
|
60
|
+
{
|
|
61
|
+
id: 'test-artifact-5',
|
|
62
|
+
itemType: 'attachments',
|
|
63
|
+
count: 50,
|
|
64
|
+
file_name: 'test_file_5.json.gz',
|
|
65
|
+
completed: false,
|
|
66
|
+
lineToProcess: 0,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 'test-artifact-1',
|
|
70
|
+
itemType: 'issues',
|
|
71
|
+
count: 79,
|
|
72
|
+
file_name: 'test_file_1.json.gz',
|
|
73
|
+
completed: false,
|
|
74
|
+
lineToProcess: 0,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'test-artifact-3',
|
|
78
|
+
itemType: 'issues',
|
|
79
|
+
count: 1921,
|
|
80
|
+
file_name: 'test_file_3.json.gz',
|
|
81
|
+
completed: false,
|
|
82
|
+
lineToProcess: 0,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'test-artifact-7',
|
|
86
|
+
itemType: 'issues',
|
|
87
|
+
count: 32,
|
|
88
|
+
file_name: 'test_file_7.json.gz',
|
|
89
|
+
completed: false,
|
|
90
|
+
lineToProcess: 0,
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
// Act
|
|
94
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
95
|
+
supportedItemTypes: itemTypesToLoad.map((it) => it.itemType),
|
|
96
|
+
statsFile,
|
|
97
|
+
});
|
|
98
|
+
// Assert
|
|
99
|
+
expect(result).toEqual(expectedResult);
|
|
100
|
+
});
|
|
101
|
+
it('should ignore files with unrecognized item types in statsFile', () => {
|
|
102
|
+
// Arrange
|
|
103
|
+
const itemTypesToLoad = [
|
|
104
|
+
{ itemType: 'issues', create: jest.fn(), update: jest.fn() },
|
|
105
|
+
{ itemType: 'unrecognized', create: jest.fn(), update: jest.fn() },
|
|
106
|
+
];
|
|
107
|
+
const expectedResult = [
|
|
108
|
+
{
|
|
109
|
+
id: 'test-artifact-1',
|
|
110
|
+
itemType: 'issues',
|
|
111
|
+
count: 79,
|
|
112
|
+
file_name: 'test_file_1.json.gz',
|
|
113
|
+
completed: false,
|
|
114
|
+
lineToProcess: 0,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'test-artifact-3',
|
|
118
|
+
itemType: 'issues',
|
|
119
|
+
count: 1921,
|
|
120
|
+
file_name: 'test_file_3.json.gz',
|
|
121
|
+
completed: false,
|
|
122
|
+
lineToProcess: 0,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'test-artifact-7',
|
|
126
|
+
itemType: 'issues',
|
|
127
|
+
count: 32,
|
|
128
|
+
file_name: 'test_file_7.json.gz',
|
|
129
|
+
completed: false,
|
|
130
|
+
lineToProcess: 0,
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
// Act
|
|
134
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
135
|
+
supportedItemTypes: itemTypesToLoad.map((it) => it.itemType),
|
|
136
|
+
statsFile,
|
|
137
|
+
});
|
|
138
|
+
// Assert
|
|
139
|
+
expect(result).toEqual(expectedResult);
|
|
140
|
+
});
|
|
141
|
+
it('should parse count string to number', () => {
|
|
142
|
+
// Arrange
|
|
143
|
+
const singleItemStatsFile = [
|
|
144
|
+
{
|
|
145
|
+
id: 'test-artifact-single',
|
|
146
|
+
file_name: 'test_file_single.json.gz',
|
|
147
|
+
item_type: 'issues',
|
|
148
|
+
count: '12345',
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
const supportedItemTypes = ['issues'];
|
|
152
|
+
// Act
|
|
153
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
154
|
+
supportedItemTypes,
|
|
155
|
+
statsFile: singleItemStatsFile,
|
|
156
|
+
});
|
|
157
|
+
// Assert
|
|
158
|
+
expect(result[0].count).toBe(12345);
|
|
159
|
+
expect(typeof result[0].count).toBe('number');
|
|
160
|
+
});
|
|
161
|
+
it('should initialize completed as false and lineToProcess as 0', () => {
|
|
162
|
+
// Arrange
|
|
163
|
+
const singleItemStatsFile = [
|
|
164
|
+
{
|
|
165
|
+
id: 'test-artifact-init',
|
|
166
|
+
file_name: 'test_file_init.json.gz',
|
|
167
|
+
item_type: 'issues',
|
|
168
|
+
count: '100',
|
|
169
|
+
},
|
|
170
|
+
];
|
|
171
|
+
const supportedItemTypes = ['issues'];
|
|
172
|
+
// Act
|
|
173
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
174
|
+
supportedItemTypes,
|
|
175
|
+
statsFile: singleItemStatsFile,
|
|
176
|
+
});
|
|
177
|
+
// Assert
|
|
178
|
+
expect(result[0].completed).toBe(false);
|
|
179
|
+
expect(result[0].lineToProcess).toBe(0);
|
|
180
|
+
});
|
|
181
|
+
it('[edge] should return an empty array when statsFile is empty', () => {
|
|
182
|
+
// Arrange
|
|
183
|
+
const emptyStatsFile = [];
|
|
184
|
+
const itemTypesToLoad = [
|
|
185
|
+
{ itemType: 'issues', create: jest.fn(), update: jest.fn() },
|
|
186
|
+
];
|
|
187
|
+
// Act
|
|
188
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
189
|
+
supportedItemTypes: itemTypesToLoad.map((it) => it.itemType),
|
|
190
|
+
statsFile: emptyStatsFile,
|
|
191
|
+
});
|
|
192
|
+
// Assert
|
|
193
|
+
expect(result).toEqual([]);
|
|
194
|
+
});
|
|
195
|
+
it('[edge] should return an empty array when supportedItemTypes is empty', () => {
|
|
196
|
+
// Arrange
|
|
197
|
+
const supportedItemTypes = [];
|
|
198
|
+
// Act
|
|
199
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
200
|
+
supportedItemTypes,
|
|
201
|
+
statsFile,
|
|
202
|
+
});
|
|
203
|
+
// Assert
|
|
204
|
+
expect(result).toEqual([]);
|
|
205
|
+
});
|
|
206
|
+
it('[edge] should return an empty array when statsFile has no matching items', () => {
|
|
207
|
+
// Arrange
|
|
208
|
+
const itemTypesToLoad = [
|
|
209
|
+
{ itemType: 'users', create: jest.fn(), update: jest.fn() },
|
|
210
|
+
];
|
|
211
|
+
// Act
|
|
212
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
213
|
+
supportedItemTypes: itemTypesToLoad.map((it) => it.itemType),
|
|
214
|
+
statsFile,
|
|
215
|
+
});
|
|
216
|
+
// Assert
|
|
217
|
+
expect(result).toEqual([]);
|
|
218
|
+
});
|
|
219
|
+
it('[edge] should return an empty array when both statsFile and supportedItemTypes are empty', () => {
|
|
220
|
+
// Arrange
|
|
221
|
+
const emptyStatsFile = [];
|
|
222
|
+
const supportedItemTypes = [];
|
|
223
|
+
// Act
|
|
224
|
+
const result = (0, worker_adapter_helpers_1.getFilesToLoad)({
|
|
225
|
+
supportedItemTypes,
|
|
226
|
+
statsFile: emptyStatsFile,
|
|
227
|
+
});
|
|
228
|
+
// Assert
|
|
229
|
+
expect(result).toEqual([]);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe(worker_adapter_helpers_1.addReportToLoaderReport.name, () => {
|
|
233
|
+
it('should add a new report when no existing report for the item type', () => {
|
|
234
|
+
// Arrange
|
|
235
|
+
const loaderReports = [];
|
|
236
|
+
const report = {
|
|
237
|
+
item_type: 'issues',
|
|
238
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
239
|
+
[loading_1.ActionType.UPDATED]: 5,
|
|
240
|
+
};
|
|
241
|
+
// Act
|
|
242
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
243
|
+
// Assert
|
|
244
|
+
expect(result).toHaveLength(1);
|
|
245
|
+
expect(result[0]).toEqual({
|
|
246
|
+
item_type: 'issues',
|
|
247
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
248
|
+
[loading_1.ActionType.UPDATED]: 5,
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
it('should merge created counts when report for item type already exists', () => {
|
|
252
|
+
// Arrange
|
|
253
|
+
const loaderReports = [
|
|
254
|
+
{
|
|
255
|
+
item_type: 'issues',
|
|
256
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
257
|
+
},
|
|
258
|
+
];
|
|
259
|
+
const report = {
|
|
260
|
+
item_type: 'issues',
|
|
261
|
+
[loading_1.ActionType.CREATED]: 5,
|
|
262
|
+
};
|
|
263
|
+
// Act
|
|
264
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
265
|
+
// Assert
|
|
266
|
+
expect(result).toHaveLength(1);
|
|
267
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(15);
|
|
268
|
+
});
|
|
269
|
+
it('should merge updated counts when report for item type already exists', () => {
|
|
270
|
+
// Arrange
|
|
271
|
+
const loaderReports = [
|
|
272
|
+
{
|
|
273
|
+
item_type: 'issues',
|
|
274
|
+
[loading_1.ActionType.UPDATED]: 20,
|
|
275
|
+
},
|
|
276
|
+
];
|
|
277
|
+
const report = {
|
|
278
|
+
item_type: 'issues',
|
|
279
|
+
[loading_1.ActionType.UPDATED]: 8,
|
|
280
|
+
};
|
|
281
|
+
// Act
|
|
282
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
283
|
+
// Assert
|
|
284
|
+
expect(result).toHaveLength(1);
|
|
285
|
+
expect(result[0][loading_1.ActionType.UPDATED]).toBe(28);
|
|
286
|
+
});
|
|
287
|
+
it('should merge failed counts when report for item type already exists', () => {
|
|
288
|
+
// Arrange
|
|
289
|
+
const loaderReports = [
|
|
290
|
+
{
|
|
291
|
+
item_type: 'issues',
|
|
292
|
+
[loading_1.ActionType.FAILED]: 3,
|
|
293
|
+
},
|
|
294
|
+
];
|
|
295
|
+
const report = {
|
|
296
|
+
item_type: 'issues',
|
|
297
|
+
[loading_1.ActionType.FAILED]: 2,
|
|
298
|
+
};
|
|
299
|
+
// Act
|
|
300
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
301
|
+
// Assert
|
|
302
|
+
expect(result).toHaveLength(1);
|
|
303
|
+
expect(result[0][loading_1.ActionType.FAILED]).toBe(5);
|
|
304
|
+
});
|
|
305
|
+
it('should merge all action types when report for item type already exists', () => {
|
|
306
|
+
// Arrange
|
|
307
|
+
const loaderReports = [
|
|
308
|
+
{
|
|
309
|
+
item_type: 'issues',
|
|
310
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
311
|
+
[loading_1.ActionType.UPDATED]: 20,
|
|
312
|
+
[loading_1.ActionType.FAILED]: 3,
|
|
313
|
+
},
|
|
314
|
+
];
|
|
315
|
+
const report = {
|
|
316
|
+
item_type: 'issues',
|
|
317
|
+
[loading_1.ActionType.CREATED]: 5,
|
|
318
|
+
[loading_1.ActionType.UPDATED]: 8,
|
|
319
|
+
[loading_1.ActionType.FAILED]: 2,
|
|
320
|
+
};
|
|
321
|
+
// Act
|
|
322
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
323
|
+
// Assert
|
|
324
|
+
expect(result).toHaveLength(1);
|
|
325
|
+
expect(result[0]).toEqual({
|
|
326
|
+
item_type: 'issues',
|
|
327
|
+
[loading_1.ActionType.CREATED]: 15,
|
|
328
|
+
[loading_1.ActionType.UPDATED]: 28,
|
|
329
|
+
[loading_1.ActionType.FAILED]: 5,
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
it('should add reports for different item types separately', () => {
|
|
333
|
+
// Arrange
|
|
334
|
+
const loaderReports = [
|
|
335
|
+
{
|
|
336
|
+
item_type: 'issues',
|
|
337
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
338
|
+
},
|
|
339
|
+
];
|
|
340
|
+
const report = {
|
|
341
|
+
item_type: 'comments',
|
|
342
|
+
[loading_1.ActionType.CREATED]: 50,
|
|
343
|
+
};
|
|
344
|
+
// Act
|
|
345
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
346
|
+
// Assert
|
|
347
|
+
expect(result).toHaveLength(2);
|
|
348
|
+
expect(result[0]).toEqual({
|
|
349
|
+
item_type: 'issues',
|
|
350
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
351
|
+
});
|
|
352
|
+
expect(result[1]).toEqual({
|
|
353
|
+
item_type: 'comments',
|
|
354
|
+
[loading_1.ActionType.CREATED]: 50,
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
it('should preserve existing count when new report has undefined for an action type', () => {
|
|
358
|
+
// Arrange
|
|
359
|
+
const loaderReports = [
|
|
360
|
+
{
|
|
361
|
+
item_type: 'issues',
|
|
362
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
363
|
+
[loading_1.ActionType.UPDATED]: 5,
|
|
364
|
+
},
|
|
365
|
+
];
|
|
366
|
+
const report = {
|
|
367
|
+
item_type: 'issues',
|
|
368
|
+
[loading_1.ActionType.CREATED]: 3,
|
|
369
|
+
};
|
|
370
|
+
// Act
|
|
371
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
372
|
+
// Assert
|
|
373
|
+
expect(result).toHaveLength(1);
|
|
374
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(13);
|
|
375
|
+
expect(result[0][loading_1.ActionType.UPDATED]).toBe(5);
|
|
376
|
+
});
|
|
377
|
+
it('should use new report count when existing report has undefined for an action type', () => {
|
|
378
|
+
// Arrange
|
|
379
|
+
const loaderReports = [
|
|
380
|
+
{
|
|
381
|
+
item_type: 'issues',
|
|
382
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
383
|
+
},
|
|
384
|
+
];
|
|
385
|
+
const report = {
|
|
386
|
+
item_type: 'issues',
|
|
387
|
+
[loading_1.ActionType.CREATED]: 3,
|
|
388
|
+
[loading_1.ActionType.UPDATED]: 7,
|
|
389
|
+
};
|
|
390
|
+
// Act
|
|
391
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
392
|
+
// Assert
|
|
393
|
+
expect(result).toHaveLength(1);
|
|
394
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(13);
|
|
395
|
+
expect(result[0][loading_1.ActionType.UPDATED]).toBe(7);
|
|
396
|
+
});
|
|
397
|
+
it('should mutate and return the same loaderReports array', () => {
|
|
398
|
+
// Arrange
|
|
399
|
+
const loaderReports = [];
|
|
400
|
+
const report = {
|
|
401
|
+
item_type: 'issues',
|
|
402
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
403
|
+
};
|
|
404
|
+
// Act
|
|
405
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
406
|
+
// Assert
|
|
407
|
+
expect(result).toBe(loaderReports);
|
|
408
|
+
});
|
|
409
|
+
it('[edge] should handle report with only item_type and no action counts', () => {
|
|
410
|
+
// Arrange
|
|
411
|
+
const loaderReports = [];
|
|
412
|
+
const report = {
|
|
413
|
+
item_type: 'issues',
|
|
414
|
+
};
|
|
415
|
+
// Act
|
|
416
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
417
|
+
// Assert
|
|
418
|
+
expect(result).toHaveLength(1);
|
|
419
|
+
expect(result[0]).toEqual({ item_type: 'issues' });
|
|
420
|
+
});
|
|
421
|
+
it('[edge] should handle merging when both reports have zero counts', () => {
|
|
422
|
+
// Arrange
|
|
423
|
+
const loaderReports = [
|
|
424
|
+
{
|
|
425
|
+
item_type: 'issues',
|
|
426
|
+
[loading_1.ActionType.CREATED]: 0,
|
|
427
|
+
},
|
|
428
|
+
];
|
|
429
|
+
const report = {
|
|
430
|
+
item_type: 'issues',
|
|
431
|
+
[loading_1.ActionType.CREATED]: 0,
|
|
432
|
+
};
|
|
433
|
+
// Act
|
|
434
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
435
|
+
// Assert
|
|
436
|
+
expect(result).toHaveLength(1);
|
|
437
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(0);
|
|
438
|
+
});
|
|
439
|
+
it('[edge] should handle empty loaderReports array', () => {
|
|
440
|
+
// Arrange
|
|
441
|
+
const loaderReports = [];
|
|
442
|
+
const report = {
|
|
443
|
+
item_type: 'attachments',
|
|
444
|
+
[loading_1.ActionType.CREATED]: 25,
|
|
445
|
+
[loading_1.ActionType.FAILED]: 1,
|
|
446
|
+
};
|
|
447
|
+
// Act
|
|
448
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
449
|
+
// Assert
|
|
450
|
+
expect(result).toHaveLength(1);
|
|
451
|
+
expect(result[0]).toEqual({
|
|
452
|
+
item_type: 'attachments',
|
|
453
|
+
[loading_1.ActionType.CREATED]: 25,
|
|
454
|
+
[loading_1.ActionType.FAILED]: 1,
|
|
455
|
+
});
|
|
456
|
+
});
|
|
457
|
+
it('[edge] should preserve existing created count when new report has undefined created', () => {
|
|
458
|
+
// Arrange
|
|
459
|
+
const loaderReports = [
|
|
460
|
+
{
|
|
461
|
+
item_type: 'issues',
|
|
462
|
+
[loading_1.ActionType.CREATED]: 10,
|
|
463
|
+
},
|
|
464
|
+
];
|
|
465
|
+
const report = {
|
|
466
|
+
item_type: 'issues',
|
|
467
|
+
[loading_1.ActionType.UPDATED]: 5,
|
|
468
|
+
};
|
|
469
|
+
// Act
|
|
470
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
471
|
+
// Assert
|
|
472
|
+
expect(result).toHaveLength(1);
|
|
473
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(10);
|
|
474
|
+
expect(result[0][loading_1.ActionType.UPDATED]).toBe(5);
|
|
475
|
+
});
|
|
476
|
+
it('[edge] should preserve existing updated count when new report has undefined updated', () => {
|
|
477
|
+
// Arrange
|
|
478
|
+
const loaderReports = [
|
|
479
|
+
{
|
|
480
|
+
item_type: 'issues',
|
|
481
|
+
[loading_1.ActionType.UPDATED]: 15,
|
|
482
|
+
},
|
|
483
|
+
];
|
|
484
|
+
const report = {
|
|
485
|
+
item_type: 'issues',
|
|
486
|
+
[loading_1.ActionType.CREATED]: 3,
|
|
487
|
+
};
|
|
488
|
+
// Act
|
|
489
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
490
|
+
// Assert
|
|
491
|
+
expect(result).toHaveLength(1);
|
|
492
|
+
expect(result[0][loading_1.ActionType.UPDATED]).toBe(15);
|
|
493
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(3);
|
|
494
|
+
});
|
|
495
|
+
it('[edge] should preserve existing failed count when new report has undefined failed', () => {
|
|
496
|
+
// Arrange
|
|
497
|
+
const loaderReports = [
|
|
498
|
+
{
|
|
499
|
+
item_type: 'issues',
|
|
500
|
+
[loading_1.ActionType.FAILED]: 7,
|
|
501
|
+
},
|
|
502
|
+
];
|
|
503
|
+
const report = {
|
|
504
|
+
item_type: 'issues',
|
|
505
|
+
[loading_1.ActionType.CREATED]: 2,
|
|
506
|
+
};
|
|
507
|
+
// Act
|
|
508
|
+
const result = (0, worker_adapter_helpers_1.addReportToLoaderReport)({ loaderReports, report });
|
|
509
|
+
// Assert
|
|
510
|
+
expect(result).toHaveLength(1);
|
|
511
|
+
expect(result[0][loading_1.ActionType.FAILED]).toBe(7);
|
|
512
|
+
expect(result[0][loading_1.ActionType.CREATED]).toBe(2);
|
|
513
|
+
});
|
|
514
|
+
});
|