@atlassian-dc-mcp/bitbucket 0.6.0 → 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.
Files changed (37) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/build/__tests__/bitbucket-service.test.d.ts +2 -0
  3. package/build/__tests__/bitbucket-service.test.d.ts.map +1 -0
  4. package/build/__tests__/bitbucket-service.test.js +269 -0
  5. package/build/__tests__/bitbucket-service.test.js.map +1 -0
  6. package/build/__tests__/pr-changes-mapper.test.d.ts +2 -0
  7. package/build/__tests__/pr-changes-mapper.test.d.ts.map +1 -0
  8. package/build/__tests__/pr-changes-mapper.test.js +396 -0
  9. package/build/__tests__/pr-changes-mapper.test.js.map +1 -0
  10. package/build/__tests__/pr-comment-mapper.test.d.ts +2 -0
  11. package/build/__tests__/pr-comment-mapper.test.d.ts.map +1 -0
  12. package/build/__tests__/pr-comment-mapper.test.js +210 -0
  13. package/build/__tests__/pr-comment-mapper.test.js.map +1 -0
  14. package/build/bitbucket-service.d.ts +84 -1
  15. package/build/bitbucket-service.d.ts.map +1 -1
  16. package/build/bitbucket-service.js +148 -1
  17. package/build/bitbucket-service.js.map +1 -1
  18. package/build/index.js +13 -1
  19. package/build/index.js.map +1 -1
  20. package/build/pr-changes-mapper.d.ts +32 -0
  21. package/build/pr-changes-mapper.d.ts.map +1 -0
  22. package/build/pr-changes-mapper.js +111 -0
  23. package/build/pr-changes-mapper.js.map +1 -0
  24. package/build/pr-comment-mapper.d.ts +48 -0
  25. package/build/pr-comment-mapper.d.ts.map +1 -0
  26. package/build/pr-comment-mapper.js +128 -0
  27. package/build/pr-comment-mapper.js.map +1 -0
  28. package/jest.config.js +23 -0
  29. package/package.json +5 -3
  30. package/src/__tests__/bitbucket-service.test.ts +419 -0
  31. package/src/__tests__/pr-changes-mapper.test.ts +420 -0
  32. package/src/__tests__/pr-comment-mapper.test.ts +230 -0
  33. package/src/bitbucket-service.ts +215 -2
  34. package/src/index.ts +33 -2
  35. package/src/pr-changes-mapper.ts +216 -0
  36. package/src/pr-comment-mapper.ts +318 -0
  37. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pr-comment-mapper.test.d.ts.map
@@ -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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"}