1// Copyright 2018 The Gitea Authors. All rights reserved. 2// Use of this source code is governed by a MIT-style 3// license that can be found in the LICENSE file. 4 5package models 6 7import ( 8 "testing" 9 10 "code.gitea.io/gitea/models/unittest" 11 user_model "code.gitea.io/gitea/models/user" 12 13 "github.com/stretchr/testify/assert" 14) 15 16func TestUpdateAssignee(t *testing.T) { 17 assert.NoError(t, unittest.PrepareTestDatabase()) 18 19 // Fake issue with assignees 20 issue, err := GetIssueWithAttrsByID(1) 21 assert.NoError(t, err) 22 23 // Assign multiple users 24 user2, err := user_model.GetUserByID(2) 25 assert.NoError(t, err) 26 _, _, err = issue.ToggleAssignee(&user_model.User{ID: 1}, user2.ID) 27 assert.NoError(t, err) 28 29 user3, err := user_model.GetUserByID(3) 30 assert.NoError(t, err) 31 _, _, err = issue.ToggleAssignee(&user_model.User{ID: 1}, user3.ID) 32 assert.NoError(t, err) 33 34 user1, err := user_model.GetUserByID(1) // This user is already assigned (see the definition in fixtures), so running UpdateAssignee should unassign him 35 assert.NoError(t, err) 36 _, _, err = issue.ToggleAssignee(&user_model.User{ID: 1}, user1.ID) 37 assert.NoError(t, err) 38 39 // Check if he got removed 40 isAssigned, err := IsUserAssignedToIssue(issue, user1) 41 assert.NoError(t, err) 42 assert.False(t, isAssigned) 43 44 // Check if they're all there 45 assignees, err := GetAssigneesByIssue(issue) 46 assert.NoError(t, err) 47 48 var expectedAssignees []*user_model.User 49 expectedAssignees = append(expectedAssignees, user2, user3) 50 51 for in, assignee := range assignees { 52 assert.Equal(t, assignee.ID, expectedAssignees[in].ID) 53 } 54 55 // Check if the user is assigned 56 isAssigned, err = IsUserAssignedToIssue(issue, user2) 57 assert.NoError(t, err) 58 assert.True(t, isAssigned) 59 60 // This user should not be assigned 61 isAssigned, err = IsUserAssignedToIssue(issue, &user_model.User{ID: 4}) 62 assert.NoError(t, err) 63 assert.False(t, isAssigned) 64} 65 66func TestMakeIDsFromAPIAssigneesToAdd(t *testing.T) { 67 assert.NoError(t, unittest.PrepareTestDatabase()) 68 69 _ = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}).(*user_model.User) 70 _ = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) 71 72 IDs, err := MakeIDsFromAPIAssigneesToAdd("", []string{""}) 73 assert.NoError(t, err) 74 assert.Equal(t, []int64{}, IDs) 75 76 _, err = MakeIDsFromAPIAssigneesToAdd("", []string{"none_existing_user"}) 77 assert.Error(t, err) 78 79 IDs, err = MakeIDsFromAPIAssigneesToAdd("user1", []string{"user1"}) 80 assert.NoError(t, err) 81 assert.Equal(t, []int64{1}, IDs) 82 83 IDs, err = MakeIDsFromAPIAssigneesToAdd("user2", []string{""}) 84 assert.NoError(t, err) 85 assert.Equal(t, []int64{2}, IDs) 86 87 IDs, err = MakeIDsFromAPIAssigneesToAdd("", []string{"user1", "user2"}) 88 assert.NoError(t, err) 89 assert.Equal(t, []int64{1, 2}, IDs) 90} 91