2018-05-09 19:29:04 +03:00
// Copyright 2018 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 (
"testing"
2021-09-19 14:49:59 +03:00
"code.gitea.io/gitea/models/db"
2018-05-09 19:29:04 +03:00
"github.com/stretchr/testify/assert"
)
func TestUpdateAssignee ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2018-05-09 19:29:04 +03:00
// Fake issue with assignees
2018-12-13 18:55:43 +03:00
issue , err := GetIssueWithAttrsByID ( 1 )
2018-05-09 19:29:04 +03:00
assert . NoError ( t , err )
// Assign multiple users
user2 , err := GetUserByID ( 2 )
assert . NoError ( t , err )
2019-10-25 17:46:37 +03:00
_ , _ , err = issue . ToggleAssignee ( & User { ID : 1 } , user2 . ID )
2018-05-09 19:29:04 +03:00
assert . NoError ( t , err )
user3 , err := GetUserByID ( 3 )
assert . NoError ( t , err )
2019-10-25 17:46:37 +03:00
_ , _ , err = issue . ToggleAssignee ( & User { ID : 1 } , user3 . ID )
2018-05-09 19:29:04 +03:00
assert . NoError ( t , err )
user1 , err := GetUserByID ( 1 ) // This user is already assigned (see the definition in fixtures), so running UpdateAssignee should unassign him
assert . NoError ( t , err )
2019-10-25 17:46:37 +03:00
_ , _ , err = issue . ToggleAssignee ( & User { ID : 1 } , user1 . ID )
2018-05-09 19:29:04 +03:00
assert . NoError ( t , err )
// Check if he got removed
isAssigned , err := IsUserAssignedToIssue ( issue , user1 )
assert . NoError ( t , err )
assert . False ( t , isAssigned )
// Check if they're all there
assignees , err := GetAssigneesByIssue ( issue )
assert . NoError ( t , err )
var expectedAssignees [ ] * User
2019-05-28 18:45:54 +03:00
expectedAssignees = append ( expectedAssignees , user2 , user3 )
2018-05-09 19:29:04 +03:00
for in , assignee := range assignees {
assert . Equal ( t , assignee . ID , expectedAssignees [ in ] . ID )
}
// Check if the user is assigned
isAssigned , err = IsUserAssignedToIssue ( issue , user2 )
assert . NoError ( t , err )
assert . True ( t , isAssigned )
// This user should not be assigned
isAssigned , err = IsUserAssignedToIssue ( issue , & User { ID : 4 } )
assert . NoError ( t , err )
assert . False ( t , isAssigned )
}
2019-11-10 11:07:21 +03:00
func TestMakeIDsFromAPIAssigneesToAdd ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2021-05-12 07:13:42 +03:00
2021-09-19 14:49:59 +03:00
_ = db . AssertExistsAndLoadBean ( t , & User { ID : 1 } ) . ( * User )
_ = db . AssertExistsAndLoadBean ( t , & User { ID : 2 } ) . ( * User )
2021-05-12 07:13:42 +03:00
2019-11-10 11:07:21 +03:00
IDs , err := MakeIDsFromAPIAssigneesToAdd ( "" , [ ] string { "" } )
assert . NoError ( t , err )
assert . Equal ( t , [ ] int64 { } , IDs )
IDs , err = MakeIDsFromAPIAssigneesToAdd ( "" , [ ] string { "none_existing_user" } )
assert . Error ( t , err )
IDs , err = MakeIDsFromAPIAssigneesToAdd ( "user1" , [ ] string { "user1" } )
assert . NoError ( t , err )
assert . Equal ( t , [ ] int64 { 1 } , IDs )
IDs , err = MakeIDsFromAPIAssigneesToAdd ( "user2" , [ ] string { "" } )
assert . NoError ( t , err )
assert . Equal ( t , [ ] int64 { 2 } , IDs )
IDs , err = MakeIDsFromAPIAssigneesToAdd ( "" , [ ] string { "user1" , "user2" } )
assert . NoError ( t , err )
assert . Equal ( t , [ ] int64 { 1 , 2 } , IDs )
}