• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

moosetechnology / GitProjectHealth / 23798205550

31 Mar 2026 12:50PM UTC coverage: 77.762% (+0.008%) from 77.754%
23798205550

push

github

web-flow
Merge pull request #258 from moosetechnology/develop

Optimize loading associated Jira users and improve tests

16 of 19 new or added lines in 2 files covered. (84.21%)

6 existing lines in 2 files now uncovered.

23757 of 30551 relevant lines covered (77.76%)

0.78 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.46
/src/GitLabHealth-Model-Analysis/UserMetric.class.st
1
Class {
2
        #name : #UserMetric,
3
        #superclass : #Metric,
4
        #instVars : [
5
                'user',
6
                'userCommits',
7
                'userMergeRequests',
8
                'emailDomain'
9
        ],
10
        #category : #'GitLabHealth-Model-Analysis'
11
}
12

13
{ #category : #testing }
14
UserMetric class >> isAbstract [
1✔
15

1✔
16
        ^ self == UserMetric
1✔
17
]
1✔
18

19
{ #category : #calculating }
20
UserMetric >> calculate [
21

22
        ^ self subclassResponsibility
23
]
24

25
{ #category : #accessing }
26
UserMetric >> description [
27

28
        ^ self subclassResponsibility
29
]
30

31
{ #category : #accessing }
32
UserMetric >> emailDomain: anObject [
×
33

×
34
        emailDomain := anObject
×
35
]
×
36

37
{ #category : #initialization }
38
UserMetric >> initialize [
1✔
39
        over := Date
1✔
40
]
1✔
41

42
{ #category : #loading }
43
UserMetric >> load [
44

45
        ^ self subclassResponsibility
46
]
47

48
{ #category : #loading }
49
UserMetric >> loadCompleteMergeRequestsSince: since until: until [
1✔
50

1✔
51
        | mergeRequests |
1✔
52
        mergeRequests := self
1✔
53
                                 loadMergeRequestsSince: since until: until.
1✔
54

1✔
55
        mergeRequests do: [ :mergeRequest |
1✔
56
                glhImporter importMergeResquestMerger: mergeRequest.
1✔
57
                glhImporter importMergeRequestCommits: mergeRequest ].
1✔
58

1✔
59
        ^ mergeRequests
1✔
60
]
1✔
61

62
{ #category : #loading }
63
UserMetric >> loadMergeRequestsSince: since until: until [
1✔
64

1✔
65
        | cacheSymbol mergeRequests |
1✔
66
        glhImporter withCommitDiffs: false.
1✔
67
        cacheSymbol := self
1✔
68
                               cacheSymbolFor: GLHMergeRequest
1✔
69
                               since: since
1✔
70
                               until: until.
1✔
71

1✔
72
        mergeRequests := user contributedProjects collect: [ :project |
1✔
73
                                 | mr |
1✔
74
                                 project cacheAt: cacheSymbol ifAbsentPut: [
1✔
75
                                         mr := glhImporter
1✔
76
                                                       importMergeRequestsOfProject: project
1✔
77
                                                       since: since
1✔
78
                                                       until: until.
1✔
79
                                         mr ] ].
1✔
80

1✔
81
        mergeRequests := mergeRequests flattened.
1✔
82
        glhImporter withCommitDiffs: true.
1✔
83

1✔
84
        mergeRequests do: [ :mr | glhImporter importMergeResquestAuthor: mr ].
1✔
85

1✔
86
        ^ mergeRequests "mergeRequests select: [ :mergeRequest |
1✔
87
                  mergeRequest author = user ]"
1✔
88
]
1✔
89

90
{ #category : #loading }
91
UserMetric >> loadMergeRequestsWithJiraIssueSince: since until: until [
×
92

×
NEW
93
        | mergeRequests |
×
NEW
94
        mergeRequests := self loadMergeRequestsSince: since until: until.
×
NEW
95
        ^ self searchAndConnectJiraIssueToMergeRequests: mergeRequests
×
UNCOV
96
]
×
97

98
{ #category : #loading }
99
UserMetric >> loadUserCommitsSince: since until: until [
1✔
100

1✔
101
        | cacheSymbol allCommits |
1✔
102
        glhImporter withCommitDiffs: false.
1✔
103

1✔
104
        cacheSymbol := self
1✔
105
                               cacheSymbolFor: GLHCommit
1✔
106
                               since: since
1✔
107
                               until: until.
1✔
108

1✔
109
        "download commits unless project cache is not empty"
1✔
110
        allCommits := user contributedProjects collect: [ :project |
1✔
111
                              project repository
1✔
112
                                      cacheAt: cacheSymbol
1✔
113
                                      ifAbsentPut: [
1✔
114
                                              | foundCommits |
1✔
115
                                              foundCommits := glhImporter
1✔
116
                                                                      importCommitsOfProject: project
1✔
117
                                                                      since: since
1✔
118
                                                                      until: until.
1✔
119
                                              foundCommits ] ].
1✔
120

1✔
121
        allCommits := allCommits flatten.
1✔
122
        allCommits do: [ :commit | glhImporter importCreatorOfCommit: commit ].
1✔
123
        glhImporter chainsCommitsFrom: allCommits.
1✔
124
        glhImporter withCommitDiffs: true.
1✔
125

1✔
126
        ^ allCommits reject: [ :commit | commit commitCreator ~= user ]
1✔
127
]
1✔
128

129
{ #category : #loading }
130
UserMetric >> loadUserCompleteCommitsSince: since until: until [
1✔
131

1✔
132
        | commits |
1✔
133
        commits := self loadUserCommitsSince: since until: until.
1✔
134
        commits do: [ :commit | glhImporter completeImportedCommit: commit ].
1✔
135
        ^ commits
1✔
136
]
1✔
137

138
{ #category : #loading }
139
UserMetric >> loadUserCompleteMergeRequestsSince: since until: until [
1✔
140

1✔
141
        | mergeRequests |
1✔
142
        mergeRequests := self loadUserMergeRequestsSince: since until: until.
1✔
143

1✔
144
        mergeRequests do: [ :mergeRequest |
1✔
145
                glhImporter importMergeResquestMerger: mergeRequest.
1✔
146
                glhImporter importMergeRequestCommits: mergeRequest ].
1✔
147

1✔
148
        ^ mergeRequests
1✔
149
]
1✔
150

151
{ #category : #loading }
152
UserMetric >> loadUserCompleteMergeRequestsWithJiraIssueSince: since until: until [
1✔
153

1✔
154
        | mergeRequests |
1✔
155
        mergeRequests := self
1✔
156
                                 loadUserCompleteMergeRequestsSince: since
1✔
157
                                 until: until.
1✔
158
        ^ self searchAndConnectJiraIssueToMergeRequests: mergeRequests
1✔
159
]
1✔
160

161
{ #category : #loading }
162
UserMetric >> loadUserMergeRequestsSince: since until: until [
1✔
163

1✔
164
        | mergeRequests |
1✔
165
        mergeRequests := self loadMergeRequestsSince: since until: until.
1✔
166

1✔
167
        ^ mergeRequests select: [ :mergeRequest | mergeRequest author = user ]
1✔
168
]
1✔
169

170
{ #category : #loading }
171
UserMetric >> loadUserMergeRequestsWithJiraIssueSince: since until: until [
1✔
172

1✔
173
        | mergeRequests |
1✔
174
        mergeRequests := self loadUserMergeRequestsSince: since until: until.
1✔
175
        ^ self searchAndConnectJiraIssueToMergeRequests: mergeRequests
1✔
176
]
1✔
177

178
{ #category : #loading }
179
UserMetric >> searchAndConnectJiraIssueToMergeRequests: mergeRequests [
1✔
180

1✔
181
        | jiraIds connector |
1✔
182
        connector := GPJCConnector new.
1✔
183
        jiraIds := mergeRequests
1✔
184
                           collect: [ :mergeRequest |
1✔
185
                                   connector jiraKeyFromCommitMessage: mergeRequest title ]
1✔
186
                           thenReject: [ :id | id isNil ].
1✔
187
        jiraImporter importAllIssues: jiraIds.
1✔
188

1✔
189
        connector
1✔
190
                gpModel: glhImporter glhModel;
1✔
191
                jiraModel: jiraImporter model;
1✔
192
                connectMergeRequests: mergeRequests.
1✔
193

1✔
194
        ^ mergeRequests select: [ :mergeRequest |
1✔
195
                  mergeRequest jiraIssue isNotNil ]
1✔
196
]
1✔
197

198
{ #category : #accessing }
199
UserMetric >> user: anObject [
1✔
200

1✔
201
        user := anObject
1✔
202
]
1✔
203

204
{ #category : #email }
205
UserMetric >> userEmail [
1✔
206

1✔
207
        user public_email = '' ifFalse: [ ^ user public_email ].
1✔
208

1✔
209
        ^ ('' join: {
1✔
210
                           user username.
1✔
211
                           emailDomain }) asLowercase
1✔
212
]
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc