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.

user_repo_test.go 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright 2017 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package repo_test
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/db"
  7. repo_model "code.gitea.io/gitea/models/repo"
  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 TestRepoAssignees(t *testing.T) {
  13. assert.NoError(t, unittest.PrepareTestDatabase())
  14. repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
  15. users, err := repo_model.GetRepoAssignees(db.DefaultContext, repo2)
  16. assert.NoError(t, err)
  17. assert.Len(t, users, 1)
  18. assert.Equal(t, users[0].ID, int64(2))
  19. repo21 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 21})
  20. users, err = repo_model.GetRepoAssignees(db.DefaultContext, repo21)
  21. assert.NoError(t, err)
  22. if assert.Len(t, users, 4) {
  23. assert.ElementsMatch(t, []int64{10, 15, 16, 18}, []int64{users[0].ID, users[1].ID, users[2].ID, users[3].ID})
  24. }
  25. // do not return deactivated users
  26. assert.NoError(t, user_model.UpdateUserCols(db.DefaultContext, &user_model.User{ID: 15, IsActive: false}, "is_active"))
  27. users, err = repo_model.GetRepoAssignees(db.DefaultContext, repo21)
  28. assert.NoError(t, err)
  29. if assert.Len(t, users, 3) {
  30. assert.NotContains(t, []int64{users[0].ID, users[1].ID, users[2].ID}, 15)
  31. }
  32. }
  33. func TestRepoGetReviewers(t *testing.T) {
  34. assert.NoError(t, unittest.PrepareTestDatabase())
  35. // test public repo
  36. repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
  37. ctx := db.DefaultContext
  38. reviewers, err := repo_model.GetReviewers(ctx, repo1, 2, 2)
  39. assert.NoError(t, err)
  40. if assert.Len(t, reviewers, 3) {
  41. assert.ElementsMatch(t, []int64{1, 4, 11}, []int64{reviewers[0].ID, reviewers[1].ID, reviewers[2].ID})
  42. }
  43. // should include doer if doer is not PR poster.
  44. reviewers, err = repo_model.GetReviewers(ctx, repo1, 11, 2)
  45. assert.NoError(t, err)
  46. assert.Len(t, reviewers, 3)
  47. // should not include PR poster, if PR poster would be otherwise eligible
  48. reviewers, err = repo_model.GetReviewers(ctx, repo1, 11, 4)
  49. assert.NoError(t, err)
  50. assert.Len(t, reviewers, 2)
  51. // test private user repo
  52. repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
  53. reviewers, err = repo_model.GetReviewers(ctx, repo2, 2, 4)
  54. assert.NoError(t, err)
  55. assert.Len(t, reviewers, 1)
  56. assert.EqualValues(t, reviewers[0].ID, 2)
  57. // test private org repo
  58. repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3})
  59. reviewers, err = repo_model.GetReviewers(ctx, repo3, 2, 1)
  60. assert.NoError(t, err)
  61. assert.Len(t, reviewers, 2)
  62. reviewers, err = repo_model.GetReviewers(ctx, repo3, 2, 2)
  63. assert.NoError(t, err)
  64. assert.Len(t, reviewers, 1)
  65. }