Skip to content

Commit d42a802

Browse files
earl-warrenGustedGustedsilverwindGiteaBot
committed
Add unit test for repository collaboration (go-gitea#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 <[email protected]> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/825 Co-authored-by: Gusted <[email protected]> Co-authored-by: silverwind <[email protected]> Co-authored-by: Giteabot <[email protected]>
1 parent e610b03 commit d42a802

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

models/repo/collaboration_test.go

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@ func TestRepository_GetCollaborators(t *testing.T) {
3333
test(2)
3434
test(3)
3535
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)
3649
}
3750

3851
func TestRepository_IsCollaborator(t *testing.T) {
@@ -66,5 +79,80 @@ func TestRepository_ChangeCollaborationAccessMode(t *testing.T) {
6679

6780
assert.NoError(t, repo_model.ChangeCollaborationAccessMode(db.DefaultContext, repo, unittest.NonexistentID, perm.AccessModeAdmin))
6881

82+
// Disvard invalid input.
83+
assert.NoError(t, repo_model.ChangeCollaborationAccessMode(db.DefaultContext, repo, 4, perm.AccessMode(unittest.NonexistentID)))
84+
6985
unittest.CheckConsistencyFor(t, &repo_model.Repository{ID: repo.ID})
7086
}
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+
}

0 commit comments

Comments
 (0)