@atlassian-dc-mcp/bitbucket 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/build/__tests__/bitbucket-service.test.d.ts +2 -0
- package/build/__tests__/bitbucket-service.test.d.ts.map +1 -0
- package/build/__tests__/bitbucket-service.test.js +269 -0
- package/build/__tests__/bitbucket-service.test.js.map +1 -0
- package/build/__tests__/pr-changes-mapper.test.d.ts +2 -0
- package/build/__tests__/pr-changes-mapper.test.d.ts.map +1 -0
- package/build/__tests__/pr-changes-mapper.test.js +396 -0
- package/build/__tests__/pr-changes-mapper.test.js.map +1 -0
- package/build/__tests__/pr-comment-mapper.test.d.ts +2 -0
- package/build/__tests__/pr-comment-mapper.test.d.ts.map +1 -0
- package/build/__tests__/pr-comment-mapper.test.js +210 -0
- package/build/__tests__/pr-comment-mapper.test.js.map +1 -0
- package/build/bitbucket-service.d.ts +84 -1
- package/build/bitbucket-service.d.ts.map +1 -1
- package/build/bitbucket-service.js +148 -1
- package/build/bitbucket-service.js.map +1 -1
- package/build/index.js +12 -0
- package/build/index.js.map +1 -1
- package/build/pr-changes-mapper.d.ts +32 -0
- package/build/pr-changes-mapper.d.ts.map +1 -0
- package/build/pr-changes-mapper.js +111 -0
- package/build/pr-changes-mapper.js.map +1 -0
- package/build/pr-comment-mapper.d.ts +48 -0
- package/build/pr-comment-mapper.d.ts.map +1 -0
- package/build/pr-comment-mapper.js +128 -0
- package/build/pr-comment-mapper.js.map +1 -0
- package/jest.config.js +23 -0
- package/package.json +5 -3
- package/src/__tests__/bitbucket-service.test.ts +419 -0
- package/src/__tests__/pr-changes-mapper.test.ts +420 -0
- package/src/__tests__/pr-comment-mapper.test.ts +230 -0
- package/src/bitbucket-service.ts +215 -2
- package/src/index.ts +32 -1
- package/src/pr-changes-mapper.ts +216 -0
- package/src/pr-comment-mapper.ts +318 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { simplifyBitbucketPRChanges, getChangesSummary } from '../pr-changes-mapper.js';
|
|
2
|
+
describe('PR Changes Mapper', () => {
|
|
3
|
+
// Test data based on the example from the issue description
|
|
4
|
+
const validPRChangesResponse = {
|
|
5
|
+
"fromHash": "abc123def456789012345678901234567890abcd",
|
|
6
|
+
"toHash": "def456abc789012345678901234567890123cdef",
|
|
7
|
+
"properties": {
|
|
8
|
+
"changeScope": "ALL"
|
|
9
|
+
},
|
|
10
|
+
"values": [
|
|
11
|
+
{
|
|
12
|
+
"contentId": "content123456789abcdef0123456789abcdef01234",
|
|
13
|
+
"fromContentId": "content123456789abcdef0123456789abcdef01234",
|
|
14
|
+
"path": {
|
|
15
|
+
"components": [
|
|
16
|
+
"src",
|
|
17
|
+
"MyProject",
|
|
18
|
+
"Handlers",
|
|
19
|
+
"Api",
|
|
20
|
+
"ImageProcessor",
|
|
21
|
+
"ImageHandler.cs"
|
|
22
|
+
],
|
|
23
|
+
"parent": "src/MyProject/Handlers/Api/ImageProcessor",
|
|
24
|
+
"name": "ImageHandler.cs",
|
|
25
|
+
"extension": "cs",
|
|
26
|
+
"toString": "src/MyProject/Handlers/Api/ImageProcessor/ImageHandler.cs"
|
|
27
|
+
},
|
|
28
|
+
"percentUnchanged": -1,
|
|
29
|
+
"type": "DELETE",
|
|
30
|
+
"nodeType": "FILE",
|
|
31
|
+
"srcExecutable": false,
|
|
32
|
+
"links": {
|
|
33
|
+
"self": [
|
|
34
|
+
null
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"properties": {
|
|
38
|
+
"gitChangeType": "DELETE"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"contentId": "content456789abcdef0123456789abcdef012345678",
|
|
43
|
+
"fromContentId": "0000000000000000000000000000000000000000",
|
|
44
|
+
"path": {
|
|
45
|
+
"components": [
|
|
46
|
+
"src",
|
|
47
|
+
"MyProject",
|
|
48
|
+
"Handlers",
|
|
49
|
+
"Api",
|
|
50
|
+
"ProcessorService",
|
|
51
|
+
"ProcessorHandler.cs"
|
|
52
|
+
],
|
|
53
|
+
"parent": "src/MyProject/Handlers/Api/ProcessorService",
|
|
54
|
+
"name": "ProcessorHandler.cs",
|
|
55
|
+
"extension": "cs",
|
|
56
|
+
"toString": "src/MyProject/Handlers/Api/ProcessorService/ProcessorHandler.cs"
|
|
57
|
+
},
|
|
58
|
+
"executable": false,
|
|
59
|
+
"percentUnchanged": -1,
|
|
60
|
+
"type": "ADD",
|
|
61
|
+
"nodeType": "FILE",
|
|
62
|
+
"links": {
|
|
63
|
+
"self": [
|
|
64
|
+
null
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"properties": {
|
|
68
|
+
"gitChangeType": "ADD"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"contentId": "content789abcdef0123456789abcdef0123456789ab",
|
|
73
|
+
"fromContentId": "content987654321fedcba0987654321fedcba098765",
|
|
74
|
+
"path": {
|
|
75
|
+
"components": [
|
|
76
|
+
"src",
|
|
77
|
+
"MyProject",
|
|
78
|
+
"Extensions",
|
|
79
|
+
"DatabaseExtensions.cs"
|
|
80
|
+
],
|
|
81
|
+
"parent": "src/MyProject/Extensions",
|
|
82
|
+
"name": "DatabaseExtensions.cs",
|
|
83
|
+
"extension": "cs",
|
|
84
|
+
"toString": "src/MyProject/Extensions/DatabaseExtensions.cs"
|
|
85
|
+
},
|
|
86
|
+
"executable": false,
|
|
87
|
+
"percentUnchanged": -1,
|
|
88
|
+
"type": "MODIFY",
|
|
89
|
+
"nodeType": "FILE",
|
|
90
|
+
"srcExecutable": false,
|
|
91
|
+
"links": {
|
|
92
|
+
"self": [
|
|
93
|
+
null
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
"properties": {
|
|
97
|
+
"gitChangeType": "MODIFY"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"contentId": "contentabcdef0123456789abcdef0123456789abcd",
|
|
102
|
+
"fromContentId": "0000000000000000000000000000000000000000",
|
|
103
|
+
"path": {
|
|
104
|
+
"components": [
|
|
105
|
+
"src",
|
|
106
|
+
"MyProject",
|
|
107
|
+
"Services",
|
|
108
|
+
"EventHandlers",
|
|
109
|
+
"RequestHandler.cs"
|
|
110
|
+
],
|
|
111
|
+
"parent": "src/MyProject/Services/EventHandlers",
|
|
112
|
+
"name": "RequestHandler.cs",
|
|
113
|
+
"extension": "cs",
|
|
114
|
+
"toString": "src/MyProject/Services/EventHandlers/RequestHandler.cs"
|
|
115
|
+
},
|
|
116
|
+
"executable": false,
|
|
117
|
+
"percentUnchanged": -1,
|
|
118
|
+
"type": "ADD",
|
|
119
|
+
"nodeType": "FILE",
|
|
120
|
+
"links": {
|
|
121
|
+
"self": [
|
|
122
|
+
null
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
"properties": {
|
|
126
|
+
"orphanedComments": 0,
|
|
127
|
+
"gitChangeType": "ADD",
|
|
128
|
+
"activeComments": 1
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"contentId": "contentdef0123456789abcdef0123456789abcdef01",
|
|
133
|
+
"fromContentId": "contentfedcba9876543210fedcba9876543210fedcb",
|
|
134
|
+
"path": {
|
|
135
|
+
"components": [
|
|
136
|
+
"tests",
|
|
137
|
+
"MyProject.Tests",
|
|
138
|
+
"Handlers",
|
|
139
|
+
"Api",
|
|
140
|
+
"ProcessorHandlerTests.cs"
|
|
141
|
+
],
|
|
142
|
+
"parent": "tests/MyProject.Tests/Handlers/Api",
|
|
143
|
+
"name": "ProcessorHandlerTests.cs",
|
|
144
|
+
"extension": "cs",
|
|
145
|
+
"toString": "tests/MyProject.Tests/Handlers/Api/ProcessorHandlerTests.cs"
|
|
146
|
+
},
|
|
147
|
+
"executable": false,
|
|
148
|
+
"percentUnchanged": 54,
|
|
149
|
+
"type": "MOVE",
|
|
150
|
+
"nodeType": "FILE",
|
|
151
|
+
"srcPath": {
|
|
152
|
+
"components": [
|
|
153
|
+
"tests",
|
|
154
|
+
"MyProject.Tests",
|
|
155
|
+
"Handlers",
|
|
156
|
+
"Api",
|
|
157
|
+
"ImageHandlerTests.cs"
|
|
158
|
+
],
|
|
159
|
+
"parent": "tests/MyProject.Tests/Handlers/Api",
|
|
160
|
+
"name": "ImageHandlerTests.cs",
|
|
161
|
+
"extension": "cs",
|
|
162
|
+
"toString": "tests/MyProject.Tests/Handlers/Api/ImageHandlerTests.cs"
|
|
163
|
+
},
|
|
164
|
+
"srcExecutable": false,
|
|
165
|
+
"links": {
|
|
166
|
+
"self": [
|
|
167
|
+
null
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
"properties": {
|
|
171
|
+
"gitChangeType": "RENAME"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"size": 5,
|
|
176
|
+
"isLastPage": true,
|
|
177
|
+
"start": 0,
|
|
178
|
+
"limit": 25,
|
|
179
|
+
"nextPageStart": null
|
|
180
|
+
};
|
|
181
|
+
describe('simplifyBitbucketPRChanges', () => {
|
|
182
|
+
it('should simplify valid PR changes response correctly', () => {
|
|
183
|
+
const result = simplifyBitbucketPRChanges(validPRChangesResponse);
|
|
184
|
+
const expectedResult = {
|
|
185
|
+
fromHash: 'abc123def456789012345678901234567890abcd',
|
|
186
|
+
toHash: 'def456abc789012345678901234567890123cdef',
|
|
187
|
+
changeScope: 'ALL',
|
|
188
|
+
changes: [
|
|
189
|
+
{
|
|
190
|
+
contentId: 'content123456789abcdef0123456789abcdef01234',
|
|
191
|
+
path: {
|
|
192
|
+
name: 'ImageHandler.cs',
|
|
193
|
+
path: 'src/MyProject/Handlers/Api/ImageProcessor/ImageHandler.cs',
|
|
194
|
+
extension: 'cs'
|
|
195
|
+
},
|
|
196
|
+
type: 'DELETE',
|
|
197
|
+
gitChangeType: 'DELETE'
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
contentId: 'content456789abcdef0123456789abcdef012345678',
|
|
201
|
+
path: {
|
|
202
|
+
name: 'ProcessorHandler.cs',
|
|
203
|
+
path: 'src/MyProject/Handlers/Api/ProcessorService/ProcessorHandler.cs',
|
|
204
|
+
extension: 'cs'
|
|
205
|
+
},
|
|
206
|
+
type: 'ADD',
|
|
207
|
+
gitChangeType: 'ADD'
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
contentId: 'content789abcdef0123456789abcdef0123456789ab',
|
|
211
|
+
path: {
|
|
212
|
+
name: 'DatabaseExtensions.cs',
|
|
213
|
+
path: 'src/MyProject/Extensions/DatabaseExtensions.cs',
|
|
214
|
+
extension: 'cs'
|
|
215
|
+
},
|
|
216
|
+
type: 'MODIFY',
|
|
217
|
+
gitChangeType: 'MODIFY'
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
contentId: 'contentabcdef0123456789abcdef0123456789abcd',
|
|
221
|
+
path: {
|
|
222
|
+
name: 'RequestHandler.cs',
|
|
223
|
+
path: 'src/MyProject/Services/EventHandlers/RequestHandler.cs',
|
|
224
|
+
extension: 'cs'
|
|
225
|
+
},
|
|
226
|
+
type: 'ADD',
|
|
227
|
+
gitChangeType: 'ADD',
|
|
228
|
+
comments: 1
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
contentId: 'contentdef0123456789abcdef0123456789abcdef01',
|
|
232
|
+
path: {
|
|
233
|
+
name: 'ProcessorHandlerTests.cs',
|
|
234
|
+
path: 'tests/MyProject.Tests/Handlers/Api/ProcessorHandlerTests.cs',
|
|
235
|
+
extension: 'cs'
|
|
236
|
+
},
|
|
237
|
+
srcPath: {
|
|
238
|
+
name: 'ImageHandlerTests.cs',
|
|
239
|
+
path: 'tests/MyProject.Tests/Handlers/Api/ImageHandlerTests.cs',
|
|
240
|
+
extension: 'cs'
|
|
241
|
+
},
|
|
242
|
+
type: 'MOVE',
|
|
243
|
+
gitChangeType: 'RENAME'
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
summary: {
|
|
247
|
+
totalChanges: 5,
|
|
248
|
+
additions: 2,
|
|
249
|
+
deletions: 1,
|
|
250
|
+
modifications: 1,
|
|
251
|
+
moves: 1,
|
|
252
|
+
filesWithComments: 1
|
|
253
|
+
},
|
|
254
|
+
isLastPage: true
|
|
255
|
+
};
|
|
256
|
+
expect(result).toEqual(expectedResult);
|
|
257
|
+
});
|
|
258
|
+
it('should handle malformed input gracefully', () => {
|
|
259
|
+
const malformedInput = { invalid: 'data' };
|
|
260
|
+
const result = simplifyBitbucketPRChanges(malformedInput);
|
|
261
|
+
// Should return original response for malformed input
|
|
262
|
+
expect(result).toBe(malformedInput);
|
|
263
|
+
});
|
|
264
|
+
it('should handle empty values array', () => {
|
|
265
|
+
const emptyResponse = {
|
|
266
|
+
"fromHash": "abc123",
|
|
267
|
+
"toHash": "def456",
|
|
268
|
+
"properties": {
|
|
269
|
+
"changeScope": "ALL"
|
|
270
|
+
},
|
|
271
|
+
"values": [],
|
|
272
|
+
"size": 0,
|
|
273
|
+
"isLastPage": true,
|
|
274
|
+
"start": 0,
|
|
275
|
+
"limit": 25,
|
|
276
|
+
"nextPageStart": null
|
|
277
|
+
};
|
|
278
|
+
const result = simplifyBitbucketPRChanges(emptyResponse);
|
|
279
|
+
const expectedResult = {
|
|
280
|
+
fromHash: "abc123",
|
|
281
|
+
toHash: "def456",
|
|
282
|
+
changeScope: "ALL",
|
|
283
|
+
changes: [],
|
|
284
|
+
summary: {
|
|
285
|
+
totalChanges: 0,
|
|
286
|
+
additions: 0,
|
|
287
|
+
deletions: 0,
|
|
288
|
+
modifications: 0,
|
|
289
|
+
moves: 0,
|
|
290
|
+
filesWithComments: 0
|
|
291
|
+
},
|
|
292
|
+
isLastPage: true
|
|
293
|
+
};
|
|
294
|
+
expect(result).toEqual(expectedResult);
|
|
295
|
+
});
|
|
296
|
+
it('should reduce response size significantly', () => {
|
|
297
|
+
const originalSize = JSON.stringify(validPRChangesResponse).length;
|
|
298
|
+
const simplified = simplifyBitbucketPRChanges(validPRChangesResponse);
|
|
299
|
+
const simplifiedSize = JSON.stringify(simplified).length;
|
|
300
|
+
const reduction = (originalSize - simplifiedSize) / originalSize;
|
|
301
|
+
expect(reduction).toBeGreaterThan(0.4); // At least 40% reduction
|
|
302
|
+
console.log(`Original size: ${originalSize} characters`);
|
|
303
|
+
console.log(`Simplified size: ${simplifiedSize} characters`);
|
|
304
|
+
console.log(`Reduction: ${(reduction * 100).toFixed(1)}%`);
|
|
305
|
+
});
|
|
306
|
+
it('should handle missing optional fields gracefully', () => {
|
|
307
|
+
const responseWithMissingFields = {
|
|
308
|
+
...validPRChangesResponse,
|
|
309
|
+
values: [
|
|
310
|
+
{
|
|
311
|
+
"contentId": "test123",
|
|
312
|
+
"fromContentId": "test456",
|
|
313
|
+
"path": {
|
|
314
|
+
"components": ["test"],
|
|
315
|
+
"parent": "",
|
|
316
|
+
"name": "test.txt",
|
|
317
|
+
"extension": "txt",
|
|
318
|
+
"toString": "test.txt"
|
|
319
|
+
},
|
|
320
|
+
"type": "ADD",
|
|
321
|
+
"properties": {
|
|
322
|
+
"gitChangeType": "ADD"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
]
|
|
326
|
+
};
|
|
327
|
+
const result = simplifyBitbucketPRChanges(responseWithMissingFields);
|
|
328
|
+
const expectedResult = {
|
|
329
|
+
fromHash: 'abc123def456789012345678901234567890abcd',
|
|
330
|
+
toHash: 'def456abc789012345678901234567890123cdef',
|
|
331
|
+
changeScope: 'ALL',
|
|
332
|
+
changes: [
|
|
333
|
+
{
|
|
334
|
+
contentId: "test123",
|
|
335
|
+
path: {
|
|
336
|
+
name: "test.txt",
|
|
337
|
+
path: "test.txt",
|
|
338
|
+
extension: "txt"
|
|
339
|
+
},
|
|
340
|
+
type: "ADD",
|
|
341
|
+
gitChangeType: "ADD"
|
|
342
|
+
// Note: no 'comments' or 'srcPath' properties as they are optional and missing
|
|
343
|
+
}
|
|
344
|
+
],
|
|
345
|
+
summary: {
|
|
346
|
+
totalChanges: 1,
|
|
347
|
+
additions: 1,
|
|
348
|
+
deletions: 0,
|
|
349
|
+
modifications: 0,
|
|
350
|
+
moves: 0,
|
|
351
|
+
filesWithComments: 0
|
|
352
|
+
},
|
|
353
|
+
isLastPage: true
|
|
354
|
+
};
|
|
355
|
+
expect(result).toEqual(expectedResult);
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
describe('getChangesSummary', () => {
|
|
359
|
+
it('should return changes summaries as string array', () => {
|
|
360
|
+
const summary = getChangesSummary(validPRChangesResponse);
|
|
361
|
+
expect(Array.isArray(summary)).toBe(true);
|
|
362
|
+
expect(summary).toHaveLength(5);
|
|
363
|
+
expect(summary[0]).toContain('Deleted: src/MyProject/Handlers/Api/ImageProcessor/ImageHandler.cs');
|
|
364
|
+
expect(summary[1]).toContain('Added: src/MyProject/Handlers/Api/ProcessorService/ProcessorHandler.cs');
|
|
365
|
+
expect(summary[2]).toContain('Modified: src/MyProject/Extensions/DatabaseExtensions.cs');
|
|
366
|
+
expect(summary[3]).toContain('Added: src/MyProject/Services/EventHandlers/RequestHandler.cs');
|
|
367
|
+
expect(summary[3]).toContain('[1 comment]');
|
|
368
|
+
expect(summary[4]).toContain('Moved: tests/MyProject.Tests/Handlers/Api/ProcessorHandlerTests.cs');
|
|
369
|
+
expect(summary[4]).toContain('(from tests/MyProject.Tests/Handlers/Api/ImageHandlerTests.cs)');
|
|
370
|
+
});
|
|
371
|
+
it('should handle malformed input gracefully', () => {
|
|
372
|
+
const summary = getChangesSummary({ invalid: 'data' });
|
|
373
|
+
expect(Array.isArray(summary)).toBe(true);
|
|
374
|
+
expect(summary).toHaveLength(0);
|
|
375
|
+
});
|
|
376
|
+
it('should handle empty values array', () => {
|
|
377
|
+
const emptyResponse = {
|
|
378
|
+
"fromHash": "abc123",
|
|
379
|
+
"toHash": "def456",
|
|
380
|
+
"properties": {
|
|
381
|
+
"changeScope": "ALL"
|
|
382
|
+
},
|
|
383
|
+
"values": [],
|
|
384
|
+
"size": 0,
|
|
385
|
+
"isLastPage": true,
|
|
386
|
+
"start": 0,
|
|
387
|
+
"limit": 25,
|
|
388
|
+
"nextPageStart": null
|
|
389
|
+
};
|
|
390
|
+
const summary = getChangesSummary(emptyResponse);
|
|
391
|
+
expect(Array.isArray(summary)).toBe(true);
|
|
392
|
+
expect(summary).toHaveLength(0);
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
//# sourceMappingURL=pr-changes-mapper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-changes-mapper.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-changes-mapper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-comment-mapper.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pr-comment-mapper.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { simplifyBitbucketPRComments, getCommentSummary } from '../pr-comment-mapper.js';
|
|
2
|
+
describe('PR Comment Mapper', () => {
|
|
3
|
+
// Test data from the original ad-hoc test
|
|
4
|
+
const validPRResponse = {
|
|
5
|
+
size: 2,
|
|
6
|
+
limit: 100,
|
|
7
|
+
isLastPage: true,
|
|
8
|
+
values: [
|
|
9
|
+
{
|
|
10
|
+
id: 1001,
|
|
11
|
+
createdDate: 1600000000000,
|
|
12
|
+
user: {
|
|
13
|
+
name: "testuser1",
|
|
14
|
+
emailAddress: "testuser1@company.local",
|
|
15
|
+
active: true,
|
|
16
|
+
displayName: "User A",
|
|
17
|
+
id: 101,
|
|
18
|
+
slug: "testuser1",
|
|
19
|
+
type: "NORMAL",
|
|
20
|
+
links: {
|
|
21
|
+
self: [{ href: "https://bitbucket.company.local/users/testuser1" }]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
action: "COMMENTED",
|
|
25
|
+
commentAction: "ADDED",
|
|
26
|
+
comment: {
|
|
27
|
+
properties: { repositoryId: 1001 },
|
|
28
|
+
id: 2001,
|
|
29
|
+
version: 0,
|
|
30
|
+
text: "This needs review",
|
|
31
|
+
author: {
|
|
32
|
+
name: "testuser1",
|
|
33
|
+
emailAddress: "testuser1@company.local",
|
|
34
|
+
active: true,
|
|
35
|
+
displayName: "User A",
|
|
36
|
+
id: 101,
|
|
37
|
+
slug: "testuser1",
|
|
38
|
+
type: "NORMAL",
|
|
39
|
+
links: {
|
|
40
|
+
self: [{ href: "https://bitbucket.company.local/users/testuser1" }]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
createdDate: 1600000000000,
|
|
44
|
+
updatedDate: 1600000000000,
|
|
45
|
+
comments: [],
|
|
46
|
+
anchor: {
|
|
47
|
+
fromHash: "abc123def456789012345678901234567890abcd",
|
|
48
|
+
toHash: "def456abc789012345678901234567890123cdef",
|
|
49
|
+
line: 6,
|
|
50
|
+
lineType: "ADDED",
|
|
51
|
+
fileType: "TO",
|
|
52
|
+
path: "config.yml",
|
|
53
|
+
diffType: "EFFECTIVE",
|
|
54
|
+
orphaned: false
|
|
55
|
+
},
|
|
56
|
+
threadResolved: false,
|
|
57
|
+
severity: "NORMAL",
|
|
58
|
+
state: "OPEN",
|
|
59
|
+
permittedOperations: {
|
|
60
|
+
editable: false,
|
|
61
|
+
transitionable: true,
|
|
62
|
+
deletable: false
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 1002,
|
|
68
|
+
createdDate: 1600000001000,
|
|
69
|
+
user: {
|
|
70
|
+
name: "testuser2",
|
|
71
|
+
emailAddress: "testuser2@company.local",
|
|
72
|
+
active: true,
|
|
73
|
+
displayName: "User B",
|
|
74
|
+
id: 102,
|
|
75
|
+
slug: "testuser2",
|
|
76
|
+
type: "NORMAL",
|
|
77
|
+
links: {
|
|
78
|
+
self: [{ href: "https://bitbucket.company.local/users/testuser2" }]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
action: "OPENED"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
start: 0
|
|
85
|
+
};
|
|
86
|
+
describe('simplifyBitbucketPRComments', () => {
|
|
87
|
+
it('should simplify valid PR response correctly', () => {
|
|
88
|
+
const result = simplifyBitbucketPRComments(validPRResponse);
|
|
89
|
+
const expectedResult = {
|
|
90
|
+
isLastPage: true,
|
|
91
|
+
activities: [
|
|
92
|
+
{
|
|
93
|
+
id: 1001,
|
|
94
|
+
createdDate: 1600000000000,
|
|
95
|
+
user: {
|
|
96
|
+
name: "testuser1",
|
|
97
|
+
displayName: "User A"
|
|
98
|
+
},
|
|
99
|
+
action: "COMMENTED",
|
|
100
|
+
commentAction: "ADDED",
|
|
101
|
+
comment: {
|
|
102
|
+
id: 2001,
|
|
103
|
+
text: "This needs review",
|
|
104
|
+
author: {
|
|
105
|
+
name: "testuser1",
|
|
106
|
+
displayName: "User A"
|
|
107
|
+
},
|
|
108
|
+
createdDate: 1600000000000,
|
|
109
|
+
anchor: {
|
|
110
|
+
line: 6,
|
|
111
|
+
path: "config.yml",
|
|
112
|
+
fileType: "TO"
|
|
113
|
+
},
|
|
114
|
+
threadResolved: false,
|
|
115
|
+
state: "OPEN"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 1002,
|
|
120
|
+
createdDate: 1600000001000,
|
|
121
|
+
user: {
|
|
122
|
+
name: "testuser2",
|
|
123
|
+
displayName: "User B"
|
|
124
|
+
},
|
|
125
|
+
action: "OPENED"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
summary: {
|
|
129
|
+
totalActivities: 2,
|
|
130
|
+
prAuthor: {
|
|
131
|
+
name: "testuser2",
|
|
132
|
+
displayName: "User B"
|
|
133
|
+
},
|
|
134
|
+
commentCount: 1,
|
|
135
|
+
unresolvedCount: 1
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
expect(result).toEqual(expectedResult);
|
|
139
|
+
});
|
|
140
|
+
it('should handle malformed input gracefully', () => {
|
|
141
|
+
const malformedInput = { invalid: 'data' };
|
|
142
|
+
const result = simplifyBitbucketPRComments(malformedInput);
|
|
143
|
+
const expectedResult = {
|
|
144
|
+
isLastPage: true,
|
|
145
|
+
activities: [],
|
|
146
|
+
summary: {
|
|
147
|
+
totalActivities: 0,
|
|
148
|
+
commentCount: 0,
|
|
149
|
+
unresolvedCount: 0
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
expect(result).toEqual(expectedResult);
|
|
153
|
+
});
|
|
154
|
+
it('should handle empty values array', () => {
|
|
155
|
+
const emptyResponse = {
|
|
156
|
+
size: 0,
|
|
157
|
+
limit: 100,
|
|
158
|
+
isLastPage: true,
|
|
159
|
+
values: [],
|
|
160
|
+
start: 0
|
|
161
|
+
};
|
|
162
|
+
const result = simplifyBitbucketPRComments(emptyResponse);
|
|
163
|
+
const expectedResult = {
|
|
164
|
+
isLastPage: true,
|
|
165
|
+
activities: [],
|
|
166
|
+
summary: {
|
|
167
|
+
totalActivities: 0,
|
|
168
|
+
commentCount: 0,
|
|
169
|
+
unresolvedCount: 0
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
expect(result).toEqual(expectedResult);
|
|
173
|
+
});
|
|
174
|
+
it('should reduce response size significantly', () => {
|
|
175
|
+
const originalSize = JSON.stringify(validPRResponse).length;
|
|
176
|
+
const simplified = simplifyBitbucketPRComments(validPRResponse);
|
|
177
|
+
const simplifiedSize = JSON.stringify(simplified).length;
|
|
178
|
+
const reduction = (originalSize - simplifiedSize) / originalSize;
|
|
179
|
+
expect(reduction).toBeGreaterThan(0.3); // At least 30% reduction
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
describe('getCommentSummary', () => {
|
|
183
|
+
it('should return comment summaries as string array', () => {
|
|
184
|
+
const summary = getCommentSummary(validPRResponse);
|
|
185
|
+
expect(Array.isArray(summary)).toBe(true);
|
|
186
|
+
expect(summary).toHaveLength(1);
|
|
187
|
+
expect(summary[0]).toContain("User A");
|
|
188
|
+
expect(summary[0]).toContain("config.yml");
|
|
189
|
+
expect(summary[0]).toContain("This needs review");
|
|
190
|
+
});
|
|
191
|
+
it('should handle malformed input gracefully', () => {
|
|
192
|
+
const summary = getCommentSummary({ invalid: 'data' });
|
|
193
|
+
expect(Array.isArray(summary)).toBe(true);
|
|
194
|
+
expect(summary).toHaveLength(0);
|
|
195
|
+
});
|
|
196
|
+
it('should handle empty values array', () => {
|
|
197
|
+
const emptyResponse = {
|
|
198
|
+
size: 0,
|
|
199
|
+
limit: 100,
|
|
200
|
+
isLastPage: true,
|
|
201
|
+
values: [],
|
|
202
|
+
start: 0
|
|
203
|
+
};
|
|
204
|
+
const summary = getCommentSummary(emptyResponse);
|
|
205
|
+
expect(Array.isArray(summary)).toBe(true);
|
|
206
|
+
expect(summary).toHaveLength(0);
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=pr-comment-mapper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-comment-mapper.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-comment-mapper.test.ts"],"names":[],"mappings":"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"}
|