2017-02-28 04:35:55 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
2017-03-16 04:34:24 +03:00
"sort"
2017-02-28 04:35:55 +03:00
"testing"
"github.com/stretchr/testify/assert"
)
func TestIssue_ReplaceLabels ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
testSuccess := func ( issueID int64 , labelIDs [ ] int64 ) {
issue := AssertExistsAndLoadBean ( t , & Issue { ID : issueID } ) . ( * Issue )
repo := AssertExistsAndLoadBean ( t , & Repository { ID : issue . RepoID } ) . ( * Repository )
doer := AssertExistsAndLoadBean ( t , & User { ID : repo . OwnerID } ) . ( * User )
labels := make ( [ ] * Label , len ( labelIDs ) )
for i , labelID := range labelIDs {
labels [ i ] = AssertExistsAndLoadBean ( t , & Label { ID : labelID , RepoID : repo . ID } ) . ( * Label )
}
assert . NoError ( t , issue . ReplaceLabels ( labels , doer ) )
AssertCount ( t , & IssueLabel { IssueID : issueID } , len ( labelIDs ) )
for _ , labelID := range labelIDs {
AssertExistsAndLoadBean ( t , & IssueLabel { IssueID : issueID , LabelID : labelID } )
}
}
testSuccess ( 1 , [ ] int64 { 2 } )
testSuccess ( 1 , [ ] int64 { 1 , 2 } )
testSuccess ( 1 , [ ] int64 { } )
}
2017-03-03 17:35:42 +03:00
func TestIssueAPIURL ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
issue := AssertExistsAndLoadBean ( t , & Issue { ID : 1 } ) . ( * Issue )
err := issue . LoadAttributes ( )
assert . NoError ( t , err )
assert . Equal ( t , "https://try.gitea.io/api/v1/repos/user2/repo1/issues/1" , issue . APIURL ( ) )
}
2017-03-15 04:10:35 +03:00
func TestGetIssuesByIDs ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
testSuccess := func ( expectedIssueIDs [ ] int64 , nonExistentIssueIDs [ ] int64 ) {
issues , err := GetIssuesByIDs ( append ( expectedIssueIDs , nonExistentIssueIDs ... ) )
assert . NoError ( t , err )
actualIssueIDs := make ( [ ] int64 , len ( issues ) )
for i , issue := range issues {
actualIssueIDs [ i ] = issue . ID
}
assert . Equal ( t , expectedIssueIDs , actualIssueIDs )
}
testSuccess ( [ ] int64 { 1 , 2 , 3 } , [ ] int64 { } )
testSuccess ( [ ] int64 { 1 , 2 , 3 } , [ ] int64 { NonexistentID } )
}
2017-03-16 04:34:24 +03:00
func TestGetParticipantsByIssueID ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
2017-06-04 20:39:08 +03:00
checkParticipants := func ( issueID int64 , userIDs [ ] int ) {
participants , err := GetParticipantsByIssueID ( issueID )
2017-03-16 04:34:24 +03:00
if assert . NoError ( t , err ) {
2017-06-04 20:39:08 +03:00
participantsIDs := make ( [ ] int , len ( participants ) )
for i , u := range participants {
participantsIDs [ i ] = int ( u . ID )
2017-03-21 03:55:00 +03:00
}
2017-06-04 20:39:08 +03:00
sort . Ints ( participantsIDs )
2017-03-16 04:34:24 +03:00
sort . Ints ( userIDs )
2017-06-04 20:39:08 +03:00
assert . Equal ( t , userIDs , participantsIDs )
2017-03-16 04:34:24 +03:00
}
}
// User 1 is issue1 poster (see fixtures/issue.yml)
// User 2 only labeled issue1 (see fixtures/comment.yml)
// Users 3 and 5 made actual comments (see fixtures/comment.yml)
2017-06-04 20:39:08 +03:00
checkParticipants ( 1 , [ ] int { 3 , 5 } )
2017-03-16 04:34:24 +03:00
}