##// END OF EJS Templates
Don't remove watchers on permission change....
Jean-Philippe Lang -
r11070:5fea79504c74
parent child
Show More
@@ -27,7 +27,6 class Member < ActiveRecord::Base
27 validate :validate_role
27 validate :validate_role
28
28
29 before_destroy :set_issue_category_nil
29 before_destroy :set_issue_category_nil
30 after_destroy :unwatch_from_permission_change
31
30
32 def role
31 def role
33 end
32 end
@@ -52,7 +51,6 class Member < ActiveRecord::Base
52 member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)}
51 member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)}
53 if member_roles_to_destroy.any?
52 if member_roles_to_destroy.any?
54 member_roles_to_destroy.each(&:destroy)
53 member_roles_to_destroy.each(&:destroy)
55 unwatch_from_permission_change
56 end
54 end
57 end
55 end
58
56
@@ -112,13 +110,4 class Member < ActiveRecord::Base
112 def validate_role
110 def validate_role
113 errors.add_on_empty :role if member_roles.empty? && roles.empty?
111 errors.add_on_empty :role if member_roles.empty? && roles.empty?
114 end
112 end
115
116 private
117
118 # Unwatch things that the user is no longer allowed to view inside project
119 def unwatch_from_permission_change
120 if user
121 Watcher.prune(:user => user, :project => project)
122 end
123 end
124 end
113 end
@@ -66,9 +66,6 class MemberRole < ActiveRecord::Base
66 def remove_inherited_roles
66 def remove_inherited_roles
67 MemberRole.where(:inherited_from => id).all.group_by(&:member).each do |member, member_roles|
67 MemberRole.where(:inherited_from => id).all.group_by(&:member).each do |member, member_roles|
68 member_roles.each(&:destroy)
68 member_roles.each(&:destroy)
69 if member && member.user
70 Watcher.prune(:user => member.user, :project => member.project)
71 end
72 end
69 end
73 end
70 end
74 end
71 end
@@ -122,70 +122,4 class MemberTest < ActiveSupport::TestCase
122 assert_equal -1, a <=> b
122 assert_equal -1, a <=> b
123 assert_equal 1, b <=> a
123 assert_equal 1, b <=> a
124 end
124 end
125
126 context "removing permissions" do
127 setup do
128 Watcher.delete_all("user_id = 9")
129 user = User.find(9)
130 # public
131 Watcher.create!(:watchable => Issue.find(1), :user => user)
132 # private
133 Watcher.create!(:watchable => Issue.find(4), :user => user)
134 Watcher.create!(:watchable => Message.find(7), :user => user)
135 Watcher.create!(:watchable => Wiki.find(2), :user => user)
136 Watcher.create!(:watchable => WikiPage.find(3), :user => user)
137 end
138
139 context "of user" do
140 setup do
141 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2])
142 end
143
144 context "by deleting membership" do
145 should "prune watchers" do
146 assert_difference 'Watcher.count', -4 do
147 @member.destroy
148 end
149 end
150 end
151
152 context "by updating roles" do
153 should "prune watchers" do
154 Role.find(2).remove_permission! :view_wiki_pages
155 member = Member.first(:order => 'id desc')
156 assert_difference 'Watcher.count', -2 do
157 member.role_ids = [2]
158 member.save
159 end
160 assert !Message.find(7).watched_by?(@user)
161 end
162 end
163 end
164
165 context "of group" do
166 setup do
167 group = Group.find(10)
168 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2])
169 group.users << User.find(9)
170 end
171
172 context "by deleting membership" do
173 should "prune watchers" do
174 assert_difference 'Watcher.count', -4 do
175 @member.destroy
176 end
177 end
178 end
179
180 context "by updating roles" do
181 should "prune watchers" do
182 Role.find(2).remove_permission! :view_wiki_pages
183 assert_difference 'Watcher.count', -2 do
184 @member.role_ids = [2]
185 @member.save
186 end
187 end
188 end
189 end
190 end
191 end
125 end
General Comments 0
You need to be logged in to leave comments. Login now