summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Koenig <etk39@cornell.edu>2017-02-23 20:37:38 -0500
committerLunny Xiao <xiaolunwen@gmail.com>2017-02-24 09:37:38 +0800
commitf1ab906c510d789e2b42745a3ccdbba7e2c7ec70 (patch)
treec2a8315d9d3a8a59e43aca5b452d9b561da323bd
parent8de8e11487ebd729d026c8a71adfa9ea6b926a69 (diff)
downloadgitea-f1ab906c510d789e2b42745a3ccdbba7e2c7ec70.tar.gz
gitea-f1ab906c510d789e2b42745a3ccdbba7e2c7ec70.zip
Unit tests for models/repo_collaboration (#1032)
-rw-r--r--models/fixtures/access.yml2
-rw-r--r--models/repo_collaboration_test.go105
2 files changed, 106 insertions, 1 deletions
diff --git a/models/fixtures/access.yml b/models/fixtures/access.yml
index f38081c993..5ea4076107 100644
--- a/models/fixtures/access.yml
+++ b/models/fixtures/access.yml
@@ -6,6 +6,6 @@
-
id: 2
- repo_id: 4
user_id: 4
+ repo_id: 4
mode: 2 # write
diff --git a/models/repo_collaboration_test.go b/models/repo_collaboration_test.go
new file mode 100644
index 0000000000..f11f3c54c3
--- /dev/null
+++ b/models/repo_collaboration_test.go
@@ -0,0 +1,105 @@
+// Copyright 2017 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCollaboration_ModeI18nKey(t *testing.T) {
+ assert.Equal(t, "repo.settings.collaboration.read",
+ (&Collaboration{Mode: AccessModeRead}).ModeI18nKey())
+ assert.Equal(t, "repo.settings.collaboration.write",
+ (&Collaboration{Mode: AccessModeWrite}).ModeI18nKey())
+ assert.Equal(t, "repo.settings.collaboration.admin",
+ (&Collaboration{Mode: AccessModeAdmin}).ModeI18nKey())
+ assert.Equal(t, "repo.settings.collaboration.undefined",
+ (&Collaboration{Mode: AccessModeNone}).ModeI18nKey())
+}
+
+func TestRepository_AddCollaborator(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ testSuccess := func(repoID, userID int64) {
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
+ assert.NoError(t, repo.GetOwner())
+ user := AssertExistsAndLoadBean(t, &User{ID: userID}).(*User)
+ assert.NoError(t, repo.AddCollaborator(user))
+ CheckConsistencyFor(t, &Repository{ID: repoID}, &User{ID: userID})
+ }
+ testSuccess(1, 4)
+ testSuccess(1, 4)
+ testSuccess(3, 4)
+}
+
+func TestRepository_GetCollaborators(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ test := func(repoID int64) {
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
+ collaborators, err := repo.GetCollaborators()
+ assert.NoError(t, err)
+ expectedLen, err := x.Count(&Collaboration{RepoID: repoID})
+ assert.NoError(t, err)
+ assert.Len(t, collaborators, int(expectedLen))
+ for _, collaborator := range collaborators {
+ assert.EqualValues(t, collaborator.User.ID, collaborator.Collaboration.UserID)
+ assert.EqualValues(t, repoID, collaborator.Collaboration.RepoID)
+ }
+ }
+ test(1)
+ test(2)
+ test(3)
+ test(4)
+}
+
+func TestRepository_IsCollaborator(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ test := func(repoID, userID int64, expected bool) {
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
+ actual, err := repo.IsCollaborator(userID)
+ assert.NoError(t, err)
+ assert.Equal(t, expected, actual)
+ }
+ test(3, 2, true)
+ test(3, NonexistentID, false)
+ test(4, 2, false)
+ test(4, 4, true)
+}
+
+func TestRepository_ChangeCollaborationAccessMode(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: 4}).(*Repository)
+ assert.NoError(t, repo.ChangeCollaborationAccessMode(4, AccessModeAdmin))
+
+ collaboration := AssertExistsAndLoadBean(t, &Collaboration{RepoID: repo.ID, UserID: 4}).(*Collaboration)
+ assert.EqualValues(t, AccessModeAdmin, collaboration.Mode)
+
+ access := AssertExistsAndLoadBean(t, &Access{UserID: 4, RepoID: repo.ID}).(*Access)
+ assert.EqualValues(t, AccessModeAdmin, access.Mode)
+
+ assert.NoError(t, repo.ChangeCollaborationAccessMode(4, AccessModeAdmin))
+
+ assert.NoError(t, repo.ChangeCollaborationAccessMode(NonexistentID, AccessModeAdmin))
+
+ CheckConsistencyFor(t, &Repository{ID: repo.ID})
+}
+
+func TestRepository_DeleteCollaboration(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: 4}).(*Repository)
+ assert.NoError(t, repo.GetOwner())
+ assert.NoError(t, repo.DeleteCollaboration(4))
+ AssertNotExistsBean(t, &Collaboration{RepoID: repo.ID, UserID: 4})
+
+ assert.NoError(t, repo.DeleteCollaboration(4))
+ AssertNotExistsBean(t, &Collaboration{RepoID: repo.ID, UserID: 4})
+
+ CheckConsistencyFor(t, &Repository{ID: repo.ID})
+}