You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

assignees_test.go 3.1KB

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