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>
This commit is contained in:
parent
eea58a5d55
commit
ad57be04b8
|
@ -33,6 +33,19 @@ func TestRepository_GetCollaborators(t *testing.T) {
|
||||||
test(2)
|
test(2)
|
||||||
test(3)
|
test(3)
|
||||||
test(4)
|
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) {
|
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))
|
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})
|
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)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue