@@ -6,7 +6,10 @@ package repository
66import (
77 "testing"
88
9+ "code.gitea.io/gitea/models/db"
10+ issues_model "code.gitea.io/gitea/models/issues"
911 "code.gitea.io/gitea/models/perm"
12+ access_model "code.gitea.io/gitea/models/perm/access"
1013 repo_model "code.gitea.io/gitea/models/repo"
1114 "code.gitea.io/gitea/models/unittest"
1215 user_model "code.gitea.io/gitea/models/user"
@@ -32,8 +35,8 @@ func TestRepository_AddCollaborator(t *testing.T) {
3235func TestRepository_DeleteCollaboration (t * testing.T ) {
3336 assert .NoError (t , unittest .PrepareTestDatabase ())
3437
35- user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 4 })
36- repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 4 })
38+ user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 15 })
39+ repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 22 })
3740
3841 assert .NoError (t , repo .LoadOwner (t .Context ()))
3942 assert .NoError (t , DeleteCollaboration (t .Context (), repo , user ))
@@ -44,3 +47,50 @@ func TestRepository_DeleteCollaboration(t *testing.T) {
4447
4548 unittest .CheckConsistencyFor (t , & repo_model.Repository {ID : repo .ID })
4649}
50+
51+ func TestRepository_DeleteCollaborationRemovesSubscriptionsAndStopwatches (t * testing.T ) {
52+ assert .NoError (t , unittest .PrepareTestDatabase ())
53+
54+ ctx := t .Context ()
55+ user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 15 })
56+ repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 22 })
57+ assert .NoError (t , repo .LoadOwner (ctx ))
58+ assert .NoError (t , repo_model .WatchRepo (ctx , user , repo , true ))
59+
60+ hasAccess , err := access_model .HasAnyUnitAccess (ctx , user .ID , repo )
61+ assert .NoError (t , err )
62+ assert .True (t , hasAccess )
63+
64+ issueCount , err := db .GetEngine (ctx ).Where ("repo_id=?" , repo .ID ).Count (new (issues_model.Issue ))
65+ assert .NoError (t , err )
66+ tempIssue := & issues_model.Issue {
67+ RepoID : repo .ID ,
68+ Index : issueCount + 1 ,
69+ PosterID : repo .OwnerID ,
70+ Title : "temp issue" ,
71+ Content : "temp" ,
72+ }
73+ assert .NoError (t , db .Insert (ctx , tempIssue ))
74+ assert .NoError (t , issues_model .CreateOrUpdateIssueWatch (ctx , user .ID , tempIssue .ID , true ))
75+ ok , err := issues_model .CreateIssueStopwatch (ctx , user , tempIssue )
76+ assert .NoError (t , err )
77+ assert .True (t , ok )
78+
79+ assert .NoError (t , DeleteCollaboration (ctx , repo , user ))
80+
81+ hasAccess , err = access_model .HasAnyUnitAccess (ctx , user .ID , repo )
82+ assert .NoError (t , err )
83+ assert .False (t , hasAccess )
84+
85+ watch , err := repo_model .GetWatch (ctx , user .ID , repo .ID )
86+ assert .NoError (t , err )
87+ assert .False (t , repo_model .IsWatchMode (watch .Mode ))
88+
89+ _ , exists , err := issues_model .GetIssueWatch (ctx , user .ID , tempIssue .ID )
90+ assert .NoError (t , err )
91+ assert .False (t , exists )
92+
93+ hasStopwatch , _ , _ , err := issues_model .HasUserStopwatch (ctx , user .ID )
94+ assert .NoError (t , err )
95+ assert .False (t , hasStopwatch )
96+ }
0 commit comments