@@ -38,13 +38,14 @@ const (
38
38
39
39
type DurationServiceTestSuite struct {
40
40
suite.Suite
41
- TestUser * models.User
42
- TestStartTime time.Time
43
- TestHeartbeats []* models.Heartbeat
44
- TestLabels []* models.ProjectLabel
45
- DurationRepository * mocks.DurationRepositoryMock
46
- HeartbeatService * mocks.HeartbeatServiceMock
47
- UserService * mocks.UserServiceMock
41
+ TestUser * models.User
42
+ TestStartTime time.Time
43
+ TestHeartbeats []* models.Heartbeat
44
+ TestLabels []* models.ProjectLabel
45
+ DurationRepository * mocks.DurationRepositoryMock
46
+ HeartbeatService * mocks.HeartbeatServiceMock
47
+ UserService * mocks.UserServiceMock
48
+ LanguageMappingService * mocks.LanguageMappingServiceMock
48
49
}
49
50
50
51
func (suite * DurationServiceTestSuite ) SetupSuite () {
@@ -131,6 +132,9 @@ func (suite *DurationServiceTestSuite) BeforeTest(suiteName, testName string) {
131
132
suite .DurationRepository = new (mocks.DurationRepositoryMock )
132
133
suite .HeartbeatService = new (mocks.HeartbeatServiceMock )
133
134
suite .UserService = new (mocks.UserServiceMock )
135
+ suite .LanguageMappingService = new (mocks.LanguageMappingServiceMock )
136
+
137
+ suite .LanguageMappingService .On ("ResolveByUser" , suite .TestUser .ID ).Return (make (map [string ]string ), nil )
134
138
}
135
139
136
140
func TestDurationServiceTestSuite (t * testing.T ) {
@@ -139,7 +143,7 @@ func TestDurationServiceTestSuite(t *testing.T) {
139
143
140
144
func (suite * DurationServiceTestSuite ) TestDurationService_Get () {
141
145
// https://anchr.io/i/F0HEK.jpg
142
- sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService )
146
+ sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService , suite . LanguageMappingService )
143
147
144
148
var (
145
149
from time.Time
@@ -188,7 +192,7 @@ func (suite *DurationServiceTestSuite) TestDurationService_Get() {
188
192
}
189
193
190
194
func (suite * DurationServiceTestSuite ) TestDurationService_Get_Filtered () {
191
- sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService )
195
+ sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService , suite . LanguageMappingService )
192
196
193
197
var (
194
198
from time.Time
@@ -211,7 +215,7 @@ func (suite *DurationServiceTestSuite) TestDurationService_Get_Filtered() {
211
215
}
212
216
213
217
func (suite * DurationServiceTestSuite ) TestDurationService_Get_CustomTimeout () {
214
- sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService )
218
+ sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService , suite . LanguageMappingService )
215
219
216
220
var (
217
221
from time.Time
@@ -267,7 +271,7 @@ func (suite *DurationServiceTestSuite) TestDurationService_Get_CustomTimeout() {
267
271
}
268
272
269
273
func (suite * DurationServiceTestSuite ) TestDurationService_Get_Cached () {
270
- sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService )
274
+ sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService , suite . LanguageMappingService )
271
275
272
276
var (
273
277
from time.Time
@@ -309,7 +313,7 @@ func (suite *DurationServiceTestSuite) TestDurationService_Get_Cached() {
309
313
}
310
314
311
315
func (suite * DurationServiceTestSuite ) TestDurationService_Get_CustomInterval () {
312
- sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService )
316
+ sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService , suite . LanguageMappingService )
313
317
314
318
var (
315
319
from time.Time
@@ -329,6 +333,34 @@ func (suite *DurationServiceTestSuite) TestDurationService_Get_CustomInterval()
329
333
assert .Empty (suite .T (), suite .DurationRepository .Calls )
330
334
}
331
335
336
+ func (suite * DurationServiceTestSuite ) TestDurationService_Get_WithLanguageMapping () {
337
+ suite .LanguageMappingService .ExpectedCalls [0 ].Unset ()
338
+ suite .LanguageMappingService .On ("ResolveByUser" , suite .TestUser .ID ).Return (map [string ]string {"go" : "Golang" }, nil )
339
+
340
+ sut := NewDurationService (suite .DurationRepository , suite .HeartbeatService , suite .UserService , suite .LanguageMappingService )
341
+
342
+ var (
343
+ from time.Time
344
+ to time.Time
345
+ durations models.Durations
346
+ err error
347
+ )
348
+
349
+ testDurations := []* models.Duration {
350
+ models .NewDurationFromHeartbeat (suite .TestHeartbeats [0 ]),
351
+ }
352
+
353
+ from , to = suite .TestStartTime .Add (- 1 * time .Hour ), suite .TestStartTime .Add (1 * time .Hour )
354
+ suite .DurationRepository .On ("GetAllWithinByFilters" , from , to , suite .TestUser , mock .Anything ).Return (testDurations , nil )
355
+ suite .HeartbeatService .On ("StreamAllWithin" , mock .Anything , mock .Anything , suite .TestUser ).Return (streamSlice ([]* models.Heartbeat {}), nil )
356
+
357
+ durations , err = sut .Get (from , to , suite .TestUser , nil , nil , false )
358
+
359
+ assert .Nil (suite .T (), err )
360
+ assert .Len (suite .T (), durations , 1 )
361
+ assert .Equal (suite .T (), "Golang" , durations .First ().Language )
362
+ }
363
+
332
364
func filterHeartbeats (from , to time.Time , heartbeats []* models.Heartbeat ) []* models.Heartbeat {
333
365
filtered := make ([]* models.Heartbeat , 0 , len (heartbeats ))
334
366
for _ , h := range heartbeats {
0 commit comments