aboutsummaryrefslogtreecommitdiffstats
path: root/models/repo
diff options
context:
space:
mode:
authorEarl Warren <109468362+earl-warren@users.noreply.github.com>2023-07-03 23:41:14 +0200
committerGitHub <noreply@github.com>2023-07-03 21:41:14 +0000
commitad57be04b87d16ff509da4f1632d444b75eb9efc (patch)
tree03e0c73c3dde26cb930026fb9b9ef45fa9561393 /models/repo
parenteea58a5d5563da818e70db514a4109fe17008d69 (diff)
downloadgitea-ad57be04b87d16ff509da4f1632d444b75eb9efc.tar.gz
gitea-ad57be04b87d16ff509da4f1632d444b75eb9efc.zip
Add unit test for repository collaboration (#25640)
Add a few extra test cases and test functions for the collaboration model to get everything covered by tests (except for error handling, as we cannot suddenly mock errors from the database). Co-authored-by: Gusted <postmaster@gusted.xyz> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/825 Co-authored-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'models/repo')
-rw-r--r--models/repo/collaboration_test.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/models/repo/collaboration_test.go b/models/repo/collaboration_test.go
index 0a6444de85..a29dfe99a5 100644
--- a/models/repo/collaboration_test.go
+++ b/models/repo/collaboration_test.go
@@ -33,6 +33,19 @@ func TestRepository_GetCollaborators(t *testing.T) {
test(2)
test(3)
test(4)
+
+ // Test db.ListOptions
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 22})
+
+ collaborators1, err := repo_model.GetCollaborators(db.DefaultContext, repo.ID, db.ListOptions{PageSize: 1, Page: 1})
+ assert.NoError(t, err)
+ assert.Len(t, collaborators1, 1)
+
+ collaborators2, err := repo_model.GetCollaborators(db.DefaultContext, repo.ID, db.ListOptions{PageSize: 1, Page: 2})
+ assert.NoError(t, err)
+ assert.Len(t, collaborators2, 1)
+
+ assert.NotEqualValues(t, collaborators1[0].ID, collaborators2[0].ID)
}
func TestRepository_IsCollaborator(t *testing.T) {
@@ -66,5 +79,80 @@ func TestRepository_ChangeCollaborationAccessMode(t *testing.T) {
assert.NoError(t, repo_model.ChangeCollaborationAccessMode(db.DefaultContext, repo, unittest.NonexistentID, perm.AccessModeAdmin))
+ // Disvard invalid input.
+ assert.NoError(t, repo_model.ChangeCollaborationAccessMode(db.DefaultContext, repo, 4, perm.AccessMode(unittest.NonexistentID)))
+
unittest.CheckConsistencyFor(t, &repo_model.Repository{ID: repo.ID})
}
+
+func TestRepository_CountCollaborators(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4})
+ count, err := repo_model.CountCollaborators(repo1.ID)
+ assert.NoError(t, err)
+ assert.EqualValues(t, 2, count)
+
+ repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 22})
+ count, err = repo_model.CountCollaborators(repo2.ID)
+ assert.NoError(t, err)
+ assert.EqualValues(t, 2, count)
+
+ // Non-existent repository.
+ count, err = repo_model.CountCollaborators(unittest.NonexistentID)
+ assert.NoError(t, err)
+ assert.EqualValues(t, 0, count)
+}
+
+func TestRepository_IsOwnerMemberCollaborator(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3})
+
+ // Organisation owner.
+ actual, err := repo_model.IsOwnerMemberCollaborator(repo1, 2)
+ assert.NoError(t, err)
+ assert.True(t, actual)
+
+ // Team member.
+ actual, err = repo_model.IsOwnerMemberCollaborator(repo1, 4)
+ assert.NoError(t, err)
+ assert.True(t, actual)
+
+ // Normal user.
+ actual, err = repo_model.IsOwnerMemberCollaborator(repo1, 1)
+ assert.NoError(t, err)
+ assert.False(t, actual)
+
+ repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4})
+
+ // Collaborator.
+ actual, err = repo_model.IsOwnerMemberCollaborator(repo2, 4)
+ assert.NoError(t, err)
+ assert.True(t, actual)
+
+ repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 15})
+
+ // Repository owner.
+ actual, err = repo_model.IsOwnerMemberCollaborator(repo3, 2)
+ assert.NoError(t, err)
+ assert.True(t, actual)
+}
+
+func TestRepo_GetCollaboration(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4})
+
+ // Existing collaboration.
+ collab, err := repo_model.GetCollaboration(db.DefaultContext, repo.ID, 4)
+ assert.NoError(t, err)
+ assert.NotNil(t, collab)
+ assert.EqualValues(t, 4, collab.UserID)
+ assert.EqualValues(t, 4, collab.RepoID)
+
+ // Non-existing collaboration.
+ collab, err = repo_model.GetCollaboration(db.DefaultContext, repo.ID, 1)
+ assert.NoError(t, err)
+ assert.Nil(t, collab)
+}