code.gitea.io/gitea@v1.22.3/models/issues/assignees_test.go (about)

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