@@ -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