Skip to content

Commit 43fdc88

Browse files
authored
Merge pull request #192 from moosetechnology/fix-merged-commit-stat
fix merged-commit-stat-bitbucket
2 parents 1fddfd1 + 363752b commit 43fdc88

File tree

3 files changed

+112
-2
lines changed

3 files changed

+112
-2
lines changed

src/BitBucketHealth-Model-Importer-Tests/BitBucketModelImporterTest.class.st

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,84 @@ BitBucketModelImporterTest >> testImportMergeRequestCommits [
417417
self assert: mergeRequest commits first additions equals: 1
418418
]
419419

420+
{ #category : #tests }
421+
BitBucketModelImporterTest >> testImportMergeRequestStats [
422+
423+
| bitBucketApi glphModel bitBucketImporter mergeRequest commit |
424+
"Given"
425+
bitBucketApi := BitBucketApiMock new.
426+
glphModel := GLHModel new name: 'test'.
427+
bitBucketImporter := BitBucketModelImporter new
428+
repoApi: bitBucketApi;
429+
glhModel: glphModel.
430+
mergeRequest := bitBucketImporter
431+
parsePullRequestIntoGLPHEMergeRequest:
432+
bitBucketApi mergedMergeRequest.
433+
commit := GLHCommit new.
434+
glphModel add: commit.
435+
mergeRequest mergedCommit: commit.
436+
437+
438+
"When"
439+
bitBucketImporter importMergeRequestStats: mergeRequest.
440+
441+
"Then"
442+
self deny: mergeRequest mergedCommit equals: nil.
443+
self assert: mergeRequest mergedCommit additions equals: 1.
444+
self assert: mergeRequest mergedCommit deletions equals: 1
445+
]
446+
447+
{ #category : #tests }
448+
BitBucketModelImporterTest >> testImportMergeRequestStatsAlreadyComputed [
449+
450+
| bitBucketApi glphModel bitBucketImporter mergeRequest commit |
451+
"Given"
452+
bitBucketApi := BitBucketApiMock new.
453+
glphModel := GLHModel new name: 'test'.
454+
bitBucketImporter := BitBucketModelImporter new
455+
repoApi: bitBucketApi;
456+
glhModel: glphModel.
457+
mergeRequest := bitBucketImporter
458+
parsePullRequestIntoGLPHEMergeRequest:
459+
bitBucketApi mergedMergeRequest.
460+
commit := GLHCommit new.
461+
glphModel add: commit.
462+
commit additions: 42.
463+
commit deletions: 24.
464+
mergeRequest mergedCommit: commit.
465+
466+
467+
"When"
468+
bitBucketImporter importMergeRequestStats: mergeRequest.
469+
470+
"Then"
471+
self deny: mergeRequest mergedCommit equals: nil.
472+
self assert: mergeRequest mergedCommit additions equals: 42.
473+
self assert: mergeRequest mergedCommit deletions equals: 24
474+
]
475+
476+
{ #category : #tests }
477+
BitBucketModelImporterTest >> testImportMergeRequestStatsNoMergedCommit [
478+
479+
| bitBucketApi glphModel bitBucketImporter mergeRequest |
480+
"Given"
481+
bitBucketApi := BitBucketApiMock new.
482+
glphModel := GLHModel new name: 'test'.
483+
bitBucketImporter := BitBucketModelImporter new
484+
repoApi: bitBucketApi;
485+
glhModel: glphModel.
486+
mergeRequest := bitBucketImporter
487+
parsePullRequestIntoGLPHEMergeRequest:
488+
bitBucketApi mergedMergeRequest.
489+
490+
491+
"When"
492+
bitBucketImporter importMergeRequestStats: mergeRequest.
493+
494+
"Then"
495+
self assert: mergeRequest mergedCommit equals: nil
496+
]
497+
420498
{ #category : #tests }
421499
BitBucketModelImporterTest >> testImportMergeRequestsSinceUntil [
422500

src/BitBucketHealth-Model-Importer-Tests/BitbucketPullRequestsMock.class.st

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,9 @@ BitbucketPullRequestsMock >> commitsOf: pullRequestId inRepository: repositorySl
2121

2222
^ commitsMock
2323
]
24+
25+
{ #category : #'api - get' }
26+
BitbucketPullRequestsMock >> diffOf: commitId inRepository: repositorySlug ofProject: projectKey [
27+
28+
^ diffs
29+
]

src/BitBucketHealth-Model-Importer/BitBucketModelImporter.class.st

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,10 @@ BitBucketModelImporter >> importGroup: aGroupID [
341341
BitBucketModelImporter >> importMergeRequestCommits: mergeRequest [
342342

343343
| commits |
344-
commits := self repoApi pullRequests commitsOf: mergeRequest id inRepository: mergeRequest project id ofProject: mergeRequest project group id.
344+
commits := self repoApi pullRequests
345+
commitsOf: mergeRequest id
346+
inRepository: mergeRequest project id
347+
ofProject: mergeRequest project group id.
345348

346349
commits := commits collect: [ :commit |
347350
self
@@ -358,13 +361,13 @@ BitBucketModelImporter >> importMergeRequestMergeCommits: aGLHMergeRequest [
358361

359362
aGLHMergeRequest mergedCommit ifNotNil: [
360363
^ { aGLHMergeRequest mergedCommit } ].
361-
362364
aGLHMergeRequest project repository commits
363365
detect: [ :c |
364366
c parent_ids includes: aGLHMergeRequest commits last id ]
365367
ifFound: [ :found |
366368
aGLHMergeRequest mergedCommit: found.
367369
aGLHMergeRequest merge_commit_sha: found id.
370+
self importMergeRequestStats: aGLHMergeRequest.
368371
^ { found } ].
369372

370373
self
@@ -378,9 +381,32 @@ BitBucketModelImporter >> importMergeRequestMergeCommits: aGLHMergeRequest [
378381
ifFound: [ :found |
379382
aGLHMergeRequest mergedCommit: found.
380383
aGLHMergeRequest merge_commit_sha: found id.
384+
self importMergeRequestStats: aGLHMergeRequest.
381385
^ { found } ]
382386
]
383387

388+
{ #category : #'import - merge request' }
389+
BitBucketModelImporter >> importMergeRequestStats: aMergeRequest [
390+
391+
| commitDiffs contribution |
392+
"can not recompute diff of mergedcommit if none"
393+
aMergeRequest mergedCommit ifNil: [ ^ self ].
394+
(aMergeRequest mergedCommit additions isNotNil and: [
395+
aMergeRequest mergedCommit deletions isNotNil ]) ifTrue: [ ^ self ].
396+
397+
commitDiffs := self repoApi pullRequests
398+
diffOf: aMergeRequest id
399+
inRepository: aMergeRequest project id
400+
ofProject: aMergeRequest project group id.
401+
402+
contribution := self getContributionFromDiffs:
403+
(commitDiffs at: #diffs).
404+
405+
^ aMergeRequest mergedCommit
406+
additions: (contribution at: #additions);
407+
deletions: (contribution at: #deletions)
408+
]
409+
384410
{ #category : #'import - merge-requests' }
385411
BitBucketModelImporter >> importMergeRequests: aGLHProject since: fromDate until: toDate [
386412

0 commit comments

Comments
 (0)