loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Earl Warren
Gusted
Gusted
silverwind
Giteabot
and committed by
GitHub
ad57be04 eea58a5d

+88
+88
models/repo/collaboration_test.go
··· 33 33 test(2) 34 34 test(3) 35 35 test(4) 36 + 37 + // Test db.ListOptions 38 + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 22}) 39 + 40 + collaborators1, err := repo_model.GetCollaborators(db.DefaultContext, repo.ID, db.ListOptions{PageSize: 1, Page: 1}) 41 + assert.NoError(t, err) 42 + assert.Len(t, collaborators1, 1) 43 + 44 + collaborators2, err := repo_model.GetCollaborators(db.DefaultContext, repo.ID, db.ListOptions{PageSize: 1, Page: 2}) 45 + assert.NoError(t, err) 46 + assert.Len(t, collaborators2, 1) 47 + 48 + assert.NotEqualValues(t, collaborators1[0].ID, collaborators2[0].ID) 36 49 } 37 50 38 51 func TestRepository_IsCollaborator(t *testing.T) { ··· 66 79 67 80 assert.NoError(t, repo_model.ChangeCollaborationAccessMode(db.DefaultContext, repo, unittest.NonexistentID, perm.AccessModeAdmin)) 68 81 82 + // Disvard invalid input. 83 + assert.NoError(t, repo_model.ChangeCollaborationAccessMode(db.DefaultContext, repo, 4, perm.AccessMode(unittest.NonexistentID))) 84 + 69 85 unittest.CheckConsistencyFor(t, &repo_model.Repository{ID: repo.ID}) 70 86 } 87 + 88 + func TestRepository_CountCollaborators(t *testing.T) { 89 + assert.NoError(t, unittest.PrepareTestDatabase()) 90 + 91 + repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4}) 92 + count, err := repo_model.CountCollaborators(repo1.ID) 93 + assert.NoError(t, err) 94 + assert.EqualValues(t, 2, count) 95 + 96 + repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 22}) 97 + count, err = repo_model.CountCollaborators(repo2.ID) 98 + assert.NoError(t, err) 99 + assert.EqualValues(t, 2, count) 100 + 101 + // Non-existent repository. 102 + count, err = repo_model.CountCollaborators(unittest.NonexistentID) 103 + assert.NoError(t, err) 104 + assert.EqualValues(t, 0, count) 105 + } 106 + 107 + func TestRepository_IsOwnerMemberCollaborator(t *testing.T) { 108 + assert.NoError(t, unittest.PrepareTestDatabase()) 109 + 110 + repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3}) 111 + 112 + // Organisation owner. 113 + actual, err := repo_model.IsOwnerMemberCollaborator(repo1, 2) 114 + assert.NoError(t, err) 115 + assert.True(t, actual) 116 + 117 + // Team member. 118 + actual, err = repo_model.IsOwnerMemberCollaborator(repo1, 4) 119 + assert.NoError(t, err) 120 + assert.True(t, actual) 121 + 122 + // Normal user. 123 + actual, err = repo_model.IsOwnerMemberCollaborator(repo1, 1) 124 + assert.NoError(t, err) 125 + assert.False(t, actual) 126 + 127 + repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4}) 128 + 129 + // Collaborator. 130 + actual, err = repo_model.IsOwnerMemberCollaborator(repo2, 4) 131 + assert.NoError(t, err) 132 + assert.True(t, actual) 133 + 134 + repo3 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 15}) 135 + 136 + // Repository owner. 137 + actual, err = repo_model.IsOwnerMemberCollaborator(repo3, 2) 138 + assert.NoError(t, err) 139 + assert.True(t, actual) 140 + } 141 + 142 + func TestRepo_GetCollaboration(t *testing.T) { 143 + assert.NoError(t, unittest.PrepareTestDatabase()) 144 + 145 + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4}) 146 + 147 + // Existing collaboration. 148 + collab, err := repo_model.GetCollaboration(db.DefaultContext, repo.ID, 4) 149 + assert.NoError(t, err) 150 + assert.NotNil(t, collab) 151 + assert.EqualValues(t, 4, collab.UserID) 152 + assert.EqualValues(t, 4, collab.RepoID) 153 + 154 + // Non-existing collaboration. 155 + collab, err = repo_model.GetCollaboration(db.DefaultContext, repo.ID, 1) 156 + assert.NoError(t, err) 157 + assert.Nil(t, collab) 158 + }