gitea源码

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