@@ -33,6 +33,19 @@ func TestRepository_GetCollaborators(t *testing.T) {
3333test (2 )
3434test (3 )
3535test (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
3851func TestRepository_IsCollaborator (t * testing.T ) {
@@ -66,5 +79,80 @@ func TestRepository_ChangeCollaborationAccessMode(t *testing.T) {
6679
6780assert .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+
6985unittest .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