@@ -289,3 +289,88 @@ func TestMilestoneList_LoadTotalTrackedTimes(t *testing.T) {
289
289
290
290
assert .Equal (t , miles [0 ].TotalTrackedTime , int64 (3662 ))
291
291
}
292
+
293
+ func TestCountMilestonesByRepoIDs (t * testing.T ) {
294
+ assert .NoError (t , PrepareTestDatabase ())
295
+ milestonesCount := func (repoID int64 ) (int , int ) {
296
+ repo := AssertExistsAndLoadBean (t , & Repository {ID : repoID }).(* Repository )
297
+ return repo .NumOpenMilestones , repo .NumClosedMilestones
298
+ }
299
+ repo1OpenCount , repo1ClosedCount := milestonesCount (1 )
300
+ repo2OpenCount , repo2ClosedCount := milestonesCount (2 )
301
+
302
+ openCounts , err := CountMilestonesByRepoIDs ([]int64 {1 , 2 }, false )
303
+ assert .NoError (t , err )
304
+ assert .EqualValues (t , repo1OpenCount , openCounts [1 ])
305
+ assert .EqualValues (t , repo2OpenCount , openCounts [2 ])
306
+
307
+ closedCounts , err := CountMilestonesByRepoIDs ([]int64 {1 , 2 }, true )
308
+ assert .NoError (t , err )
309
+ assert .EqualValues (t , repo1ClosedCount , closedCounts [1 ])
310
+ assert .EqualValues (t , repo2ClosedCount , closedCounts [2 ])
311
+ }
312
+
313
+ func TestGetMilestonesByRepoIDs (t * testing.T ) {
314
+ assert .NoError (t , PrepareTestDatabase ())
315
+ repo1 := AssertExistsAndLoadBean (t , & Repository {ID : 1 }).(* Repository )
316
+ repo2 := AssertExistsAndLoadBean (t , & Repository {ID : 2 }).(* Repository )
317
+ test := func (sortType string , sortCond func (* Milestone ) int ) {
318
+ for _ , page := range []int {0 , 1 } {
319
+ openMilestones , err := GetMilestonesByRepoIDs ([]int64 {repo1 .ID , repo2 .ID }, page , false , sortType )
320
+ assert .NoError (t , err )
321
+ assert .Len (t , openMilestones , repo1 .NumOpenMilestones + repo2 .NumOpenMilestones )
322
+ values := make ([]int , len (openMilestones ))
323
+ for i , milestone := range openMilestones {
324
+ values [i ] = sortCond (milestone )
325
+ }
326
+ assert .True (t , sort .IntsAreSorted (values ))
327
+
328
+ closedMilestones , err := GetMilestonesByRepoIDs ([]int64 {repo1 .ID , repo2 .ID }, page , true , sortType )
329
+ assert .NoError (t , err )
330
+ assert .Len (t , closedMilestones , repo1 .NumClosedMilestones + repo2 .NumClosedMilestones )
331
+ values = make ([]int , len (closedMilestones ))
332
+ for i , milestone := range closedMilestones {
333
+ values [i ] = sortCond (milestone )
334
+ }
335
+ assert .True (t , sort .IntsAreSorted (values ))
336
+ }
337
+ }
338
+ test ("furthestduedate" , func (milestone * Milestone ) int {
339
+ return - int (milestone .DeadlineUnix )
340
+ })
341
+ test ("leastcomplete" , func (milestone * Milestone ) int {
342
+ return milestone .Completeness
343
+ })
344
+ test ("mostcomplete" , func (milestone * Milestone ) int {
345
+ return - milestone .Completeness
346
+ })
347
+ test ("leastissues" , func (milestone * Milestone ) int {
348
+ return milestone .NumIssues
349
+ })
350
+ test ("mostissues" , func (milestone * Milestone ) int {
351
+ return - milestone .NumIssues
352
+ })
353
+ test ("soonestduedate" , func (milestone * Milestone ) int {
354
+ return int (milestone .DeadlineUnix )
355
+ })
356
+ }
357
+
358
+ func TestLoadTotalTrackedTime (t * testing.T ) {
359
+ assert .NoError (t , PrepareTestDatabase ())
360
+ milestone := AssertExistsAndLoadBean (t , & Milestone {ID : 1 }).(* Milestone )
361
+
362
+ assert .NoError (t , milestone .LoadTotalTrackedTime ())
363
+
364
+ assert .Equal (t , milestone .TotalTrackedTime , int64 (3662 ))
365
+ }
366
+
367
+ func TestGetMilestonesStats (t * testing.T ) {
368
+ assert .NoError (t , PrepareTestDatabase ())
369
+ repo1 := AssertExistsAndLoadBean (t , & Repository {ID : 1 }).(* Repository )
370
+ repo2 := AssertExistsAndLoadBean (t , & Repository {ID : 2 }).(* Repository )
371
+
372
+ milestoneStats , err := GetMilestonesStats ([]int64 {repo1 .ID , repo2 .ID })
373
+ assert .NoError (t , err )
374
+ assert .EqualValues (t , repo1 .NumOpenMilestones + repo2 .NumOpenMilestones , milestoneStats .OpenCount )
375
+ assert .EqualValues (t , repo1 .NumClosedMilestones + repo2 .NumClosedMilestones , milestoneStats .ClosedCount )
376
+ }
0 commit comments