2018-05-09 16:29:04 +00:00
// Copyright 2018 The Gitea Authors. All rights reserved.
2022-11-27 18:20:29 +00:00
// SPDX-License-Identifier: MIT
2018-05-09 16:29:04 +00:00
2022-06-13 09:37:59 +00:00
package issues_test
2018-05-09 16:29:04 +00:00
import (
"testing"
2022-05-20 14:08:52 +00:00
"code.gitea.io/gitea/models/db"
2022-06-13 09:37:59 +00:00
issues_model "code.gitea.io/gitea/models/issues"
2021-11-12 14:36:47 +00:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 09:49:20 +00:00
user_model "code.gitea.io/gitea/models/user"
2021-11-17 12:34:35 +00:00
2018-05-09 16:29:04 +00:00
"github.com/stretchr/testify/assert"
2024-07-30 19:41:10 +00:00
"github.com/stretchr/testify/require"
2018-05-09 16:29:04 +00:00
)
func TestUpdateAssignee ( t * testing . T ) {
2024-07-30 19:41:10 +00:00
require . NoError ( t , unittest . PrepareTestDatabase ( ) )
2018-05-09 16:29:04 +00:00
// Fake issue with assignees
2023-12-19 19:12:02 +00:00
issue , err := issues_model . GetIssueByID ( db . DefaultContext , 1 )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2023-12-19 19:12:02 +00:00
err = issue . LoadAttributes ( db . DefaultContext )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
// Assign multiple users
2022-12-03 02:48:26 +00:00
user2 , err := user_model . GetUserByID ( db . DefaultContext , 2 )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2023-04-14 18:18:28 +00:00
_ , _ , err = issues_model . ToggleIssueAssignee ( db . DefaultContext , issue , & user_model . User { ID : 1 } , user2 . ID )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
2023-09-14 02:59:53 +00:00
org3 , err := user_model . GetUserByID ( db . DefaultContext , 3 )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2023-09-14 02:59:53 +00:00
_ , _ , err = issues_model . ToggleIssueAssignee ( db . DefaultContext , issue , & user_model . User { ID : 1 } , org3 . ID )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
2022-12-03 02:48:26 +00:00
user1 , err := user_model . GetUserByID ( db . DefaultContext , 1 ) // This user is already assigned (see the definition in fixtures), so running UpdateAssignee should unassign him
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2023-04-14 18:18:28 +00:00
_ , _ , err = issues_model . ToggleIssueAssignee ( db . DefaultContext , issue , & user_model . User { ID : 1 } , user1 . ID )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
// Check if he got removed
2022-06-13 09:37:59 +00:00
isAssigned , err := issues_model . IsUserAssignedToIssue ( db . DefaultContext , issue , user1 )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
assert . False ( t , isAssigned )
// Check if they're all there
2022-05-20 14:08:52 +00:00
err = issue . LoadAssignees ( db . DefaultContext )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
2021-11-24 09:49:20 +00:00
var expectedAssignees [ ] * user_model . User
2023-09-14 02:59:53 +00:00
expectedAssignees = append ( expectedAssignees , user2 , org3 )
2018-05-09 16:29:04 +00:00
2022-05-20 14:08:52 +00:00
for in , assignee := range issue . Assignees {
2018-05-09 16:29:04 +00:00
assert . Equal ( t , assignee . ID , expectedAssignees [ in ] . ID )
}
// Check if the user is assigned
2022-06-13 09:37:59 +00:00
isAssigned , err = issues_model . IsUserAssignedToIssue ( db . DefaultContext , issue , user2 )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
assert . True ( t , isAssigned )
// This user should not be assigned
2022-06-13 09:37:59 +00:00
isAssigned , err = issues_model . IsUserAssignedToIssue ( db . DefaultContext , issue , & user_model . User { ID : 4 } )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2018-05-09 16:29:04 +00:00
assert . False ( t , isAssigned )
}
2019-11-10 08:07:21 +00:00
func TestMakeIDsFromAPIAssigneesToAdd ( t * testing . T ) {
2024-07-30 19:41:10 +00:00
require . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-05-12 04:13:42 +00:00
2022-08-16 02:22:25 +00:00
_ = unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 1 } )
_ = unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } )
2021-05-12 04:13:42 +00:00
2022-11-19 08:12:33 +00:00
IDs , err := issues_model . MakeIDsFromAPIAssigneesToAdd ( db . DefaultContext , "" , [ ] string { "" } )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2019-11-10 08:07:21 +00:00
assert . Equal ( t , [ ] int64 { } , IDs )
2022-11-19 08:12:33 +00:00
_ , err = issues_model . MakeIDsFromAPIAssigneesToAdd ( db . DefaultContext , "" , [ ] string { "none_existing_user" } )
2024-07-30 19:41:10 +00:00
require . Error ( t , err )
2019-11-10 08:07:21 +00:00
2022-11-19 08:12:33 +00:00
IDs , err = issues_model . MakeIDsFromAPIAssigneesToAdd ( db . DefaultContext , "user1" , [ ] string { "user1" } )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2019-11-10 08:07:21 +00:00
assert . Equal ( t , [ ] int64 { 1 } , IDs )
2022-11-19 08:12:33 +00:00
IDs , err = issues_model . MakeIDsFromAPIAssigneesToAdd ( db . DefaultContext , "user2" , [ ] string { "" } )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2019-11-10 08:07:21 +00:00
assert . Equal ( t , [ ] int64 { 2 } , IDs )
2022-11-19 08:12:33 +00:00
IDs , err = issues_model . MakeIDsFromAPIAssigneesToAdd ( db . DefaultContext , "" , [ ] string { "user1" , "user2" } )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2019-11-10 08:07:21 +00:00
assert . Equal ( t , [ ] int64 { 1 , 2 } , IDs )
}