Commit 5aa38f73e6599774c6f5d9ba9515f30442a4cc8a
1 parent
2140347f
Exists in
master
and in
29 other branches
Fixing tests
Showing
6 changed files
with
49 additions
and
133 deletions
Show diff stats
app/models/community.rb
... | ... | @@ -80,7 +80,7 @@ class Community < Organization |
80 | 80 | end |
81 | 81 | |
82 | 82 | def activities |
83 | - Scrap.find_by_sql("SELECT id, updated_at, '#{Scrap.to_s}' AS klass FROM #{Scrap.table_name} WHERE scraps.receiver_id = #{self.id} AND scraps.scrap_id IS NULL UNION SELECT id, updated_at, '#{ActionTracker::Record.to_s}' AS klass FROM #{ActionTracker::Record.table_name} WHERE action_tracker.target_id = #{self.id} ORDER BY updated_at DESC") | |
83 | + Scrap.find_by_sql("SELECT id, updated_at, 'Scrap' AS klass FROM scraps WHERE scraps.receiver_id = #{self.id} AND scraps.scrap_id IS NULL UNION SELECT id, updated_at, 'ActionTracker::Record' AS klass FROM action_tracker WHERE action_tracker.target_id = #{self.id} UNION SELECT action_tracker.id, action_tracker.updated_at, 'ActionTracker::Record' AS klass FROM action_tracker INNER JOIN articles ON action_tracker.target_id = articles.id WHERE articles.profile_id = #{self.id} AND action_tracker.target_type = 'Article' ORDER BY action_tracker.updated_at DESC") | |
84 | 84 | end |
85 | 85 | |
86 | 86 | end | ... | ... |
lib/notify_activity_to_profiles_job.rb
1 | 1 | class NotifyActivityToProfilesJob < Struct.new(:tracked_action_id) |
2 | 2 | NOTIFY_ONLY_COMMUNITY = [ |
3 | 3 | 'add_member_in_community', |
4 | - 'remove_member_in_community', | |
5 | 4 | ] |
6 | 5 | |
7 | 6 | NOT_NOTIFY_COMMUNITY = [ |
8 | 7 | 'join_community', |
9 | - 'leave_community', | |
10 | 8 | ] |
11 | 9 | def perform |
12 | 10 | return unless ActionTracker::Record.exists?(tracked_action_id) | ... | ... |
test/unit/community_test.rb
... | ... | @@ -274,22 +274,19 @@ class CommunityTest < ActiveSupport::TestCase |
274 | 274 | end |
275 | 275 | end |
276 | 276 | |
277 | - should "be created an tracked action to the community when an community's article is commented" do | |
277 | + should "update the action of article creation when an community's article is commented" do | |
278 | 278 | ActionTrackerNotification.delete_all |
279 | 279 | p1 = Person.first |
280 | 280 | community = fast_create(Community) |
281 | 281 | p2 = fast_create(Person) |
282 | 282 | p3 = fast_create(Person) |
283 | 283 | community.add_member(p3) |
284 | - article = fast_create(Article, :profile_id => community.id) | |
285 | - ActionTracker::Record.destroy_all | |
286 | - assert_difference(ActionTrackerNotification, :count, 3) do | |
287 | - Comment.create!(:article_id => article.id, :title => 'some', :body => 'some', :author_id => p2.id) | |
288 | - process_delayed_job_queue | |
289 | - end | |
290 | - ActionTrackerNotification.all.map{|a|a.profile}.map do |profile| | |
291 | - assert [community,p1,p3].include?(profile) | |
292 | - end | |
284 | + article = create(TextileArticle, :profile_id => community.id) | |
285 | + time = article.activity.updated_at | |
286 | + Time.stubs(:now).returns(time + 1.day) | |
287 | + Comment.create!(:source_id => article.id, :title => 'some', :body => 'some', :author_id => p2.id) | |
288 | + process_delayed_job_queue | |
289 | + assert_equal time, article.activity.updated_at | |
293 | 290 | end |
294 | 291 | |
295 | 292 | should "see get all received scraps" do |
... | ... | @@ -348,34 +345,28 @@ class CommunityTest < ActiveSupport::TestCase |
348 | 345 | scrap = Scrap.create!(defaults_for_scrap(:sender => person, :receiver => community, :content => 'A scrap')) |
349 | 346 | activity = ActionTracker::Record.last |
350 | 347 | |
351 | - assert_equal 'An article about free software', activity.get_name.last | |
352 | - assert_equal [scrap,activity], person.activities.map { |a| a.klass.constantize.find(a.id) } | |
348 | + assert_equal [scrap], community.activities.map { |a| a.klass.constantize.find(a.id) } | |
353 | 349 | end |
354 | 350 | |
355 | - should 'return tracked_actions as activities' do | |
351 | + should 'return tracked_actions of community as activities' do | |
356 | 352 | person = fast_create(Person) |
357 | - another_person = fast_create(Person) | |
353 | + community = fast_create(Community) | |
358 | 354 | |
359 | - scrap = Scrap.create!(defaults_for_scrap(:sender => another_person, :receiver => person, :content => 'A scrap')) | |
360 | 355 | UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once |
361 | - TinyMceArticle.create!(:profile => person, :name => 'An article about free software') | |
362 | - activity = ActionTracker::Record.last | |
356 | + article = create(TinyMceArticle, :profile => community, :name => 'An article about free software') | |
363 | 357 | |
364 | - assert_equal 'An article about free software', activity.get_name.last | |
365 | - assert_equal [scrap,activity], person.activities.map { |a| a.klass.constantize.find(a.id) } | |
358 | + assert_equal [article.activity], community.activities.map { |a| a.klass.constantize.find(a.id) } | |
366 | 359 | end |
367 | 360 | |
368 | - should 'return articles published on communities as activities' do | |
361 | + should 'not return tracked_actions of other community as activities' do | |
369 | 362 | person = fast_create(Person) |
370 | - another_person = fast_create(Person) | |
363 | + community = fast_create(Community) | |
364 | + community2 = fast_create(Community) | |
371 | 365 | |
372 | - scrap = Scrap.create!(defaults_for_scrap(:sender => another_person, :receiver => person, :content => 'A scrap')) | |
373 | 366 | UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once |
374 | - TinyMceArticle.create!(:profile => person, :name => 'An article about free software') | |
375 | - activity = ActionTracker::Record.last | |
367 | + article = create(TinyMceArticle, :profile => community2, :name => 'Another article about free software') | |
376 | 368 | |
377 | - assert_equal 'An article about free software', activity.get_name.last | |
378 | - assert_equal [scrap,activity], person.activities.map { |a| a.klass.constantize.find(a.id) } | |
369 | + assert_not_includes community.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity | |
379 | 370 | end |
380 | 371 | |
381 | 372 | end | ... | ... |
test/unit/person_test.rb
... | ... | @@ -1013,65 +1013,14 @@ class PersonTest < ActiveSupport::TestCase |
1013 | 1013 | assert has_add_member_notification |
1014 | 1014 | end |
1015 | 1015 | |
1016 | - should 'track only one action when a person leaves a community' do | |
1016 | + should 'not track when a person leaves a community' do | |
1017 | 1017 | p = create_user('test_user').person |
1018 | 1018 | c = fast_create(Community, :name => "Foo") |
1019 | 1019 | c.add_member(p) |
1020 | 1020 | c.add_moderator(p) |
1021 | 1021 | ActionTracker::Record.delete_all |
1022 | 1022 | c.remove_member(p) |
1023 | - assert_equal ["Foo"], ActionTracker::Record.last(:conditions => {:verb => 'leave_community'}).get_resource_name | |
1024 | - end | |
1025 | - | |
1026 | - should 'the tracker target be Community when a person leaves a community' do | |
1027 | - ActionTracker::Record.delete_all | |
1028 | - p = create_user('test_user').person | |
1029 | - c = fast_create(Community, :name => "Foo") | |
1030 | - c.add_member(p) | |
1031 | - c.add_moderator(p) | |
1032 | - ActionTracker::Record.delete_all | |
1033 | - c.remove_member(p) | |
1034 | - assert_kind_of Community, ActionTracker::Record.last(:conditions => {:verb => 'leave_community'}).target | |
1035 | - end | |
1036 | - | |
1037 | - should 'the community be notified specifically when a person leaves a community' do | |
1038 | - ActionTracker::Record.delete_all | |
1039 | - p = create_user('test_user').person | |
1040 | - c = fast_create(Community, :name => "Foo") | |
1041 | - c.add_member(p) | |
1042 | - c.add_moderator(p) | |
1043 | - ActionTracker::Record.delete_all | |
1044 | - c.remove_member(p) | |
1045 | - assert_not_nil ActionTracker::Record.last(:conditions => {:verb => 'remove_member_in_community'}) | |
1046 | - end | |
1047 | - | |
1048 | - should 'the community specific notification created when a member leaves community could not be propagated to members' do | |
1049 | - ActionTracker::Record.delete_all | |
1050 | - p1 = Person.first | |
1051 | - p2 = create_user('test_user').person | |
1052 | - p3 = create_user('test_user').person | |
1053 | - c = fast_create(Community, :name => "Foo") | |
1054 | - process_delayed_job_queue | |
1055 | - Delayed::Job.delete_all | |
1056 | - c.add_member(p1) | |
1057 | - c.add_member(p3) | |
1058 | - c.add_moderator(p1) | |
1059 | - c.add_moderator(p3) | |
1060 | - ActionTracker::Record.delete_all | |
1061 | - c.remove_member(p1) | |
1062 | - process_delayed_job_queue | |
1063 | - c.remove_member(p3) | |
1064 | - process_delayed_job_queue | |
1065 | - assert_equal 4, ActionTracker::Record.count | |
1066 | - assert_equal 5, ActionTrackerNotification.count | |
1067 | - has_remove_member_notification = false | |
1068 | - ActionTrackerNotification.all.map do |notification| | |
1069 | - if notification.action_tracker.verb == 'remove_member_in_community' | |
1070 | - has_remove_member_notification = true | |
1071 | - assert_equal c, notification.profile | |
1072 | - end | |
1073 | - end | |
1074 | - assert has_remove_member_notification | |
1023 | + assert_equal [], ActionTracker::Record.all | |
1075 | 1024 | end |
1076 | 1025 | |
1077 | 1026 | should 'get all friends online' do |
... | ... | @@ -1250,11 +1199,9 @@ class PersonTest < ActiveSupport::TestCase |
1250 | 1199 | |
1251 | 1200 | scrap = Scrap.create!(defaults_for_scrap(:sender => another_person, :receiver => person, :content => 'A scrap')) |
1252 | 1201 | UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once |
1253 | - TinyMceArticle.create!(:profile => person, :name => 'An article about free software') | |
1254 | - activity = ActionTracker::Record.last | |
1202 | + article = TinyMceArticle.create!(:profile => person, :name => 'An article about free software') | |
1255 | 1203 | |
1256 | - assert_equal 'An article about free software', activity.get_name.last | |
1257 | - assert_equal [scrap,activity], person.activities.map { |a| a.klass.constantize.find(a.id) } | |
1204 | + assert_equal [scrap,article.activity], person.activities.map { |a| a.klass.constantize.find(a.id) } | |
1258 | 1205 | end |
1259 | 1206 | |
1260 | 1207 | should 'not return tracked_actions and scraps from others as activities' do | ... | ... |
test/unit/tiny_mce_article_test.rb
... | ... | @@ -134,80 +134,64 @@ class TinyMceArticleTest < ActiveSupport::TestCase |
134 | 134 | assert_equal 1, ActionTracker::Record.count |
135 | 135 | end |
136 | 136 | |
137 | - should 'notify with different trackers activity create with different targets' do | |
137 | + should 'not group trackers activity of article\'s creation' do | |
138 | 138 | ActionTracker::Record.delete_all |
139 | 139 | profile = fast_create(Profile) |
140 | 140 | TinyMceArticle.create! :name => 'bar', :profile_id => profile.id, :published => true |
141 | 141 | TinyMceArticle.create! :name => 'another bar', :profile_id => profile.id, :published => true |
142 | - assert_equal 1, ActionTracker::Record.count | |
143 | - TinyMceArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true | |
144 | 142 | assert_equal 2, ActionTracker::Record.count |
143 | + TinyMceArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true | |
144 | + assert_equal 3, ActionTracker::Record.count | |
145 | 145 | end |
146 | 146 | |
147 | - should 'notify activity on update' do | |
147 | + should 'update activity on update of an article' do | |
148 | 148 | ActionTracker::Record.delete_all |
149 | - a = TinyMceArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | |
150 | - assert_equal 1, ActionTracker::Record.count | |
151 | - a.name = 'foo' | |
152 | - a.save! | |
153 | - assert_equal 2, ActionTracker::Record.count | |
149 | + profile = fast_create(Profile) | |
150 | + article = create(TextileArticle, :profile_id => profile.id) | |
151 | + time = article.activity.updated_at | |
152 | + Time.stubs(:now).returns(time + 1.day) | |
153 | + assert_no_difference ActionTracker::Record, :count do | |
154 | + article.name = 'foo' | |
155 | + article.save! | |
156 | + end | |
157 | + assert_equal time + 1.day, article.activity.updated_at | |
154 | 158 | end |
155 | 159 | |
156 | - should 'notify with different trackers activity update with different targets' do | |
160 | + should 'not create trackers activity when updating articles' do | |
157 | 161 | ActionTracker::Record.delete_all |
158 | 162 | a1 = TinyMceArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true |
159 | 163 | a2 = TinyMceArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true |
160 | - assert_equal 2, ActionTracker::Record.count | |
161 | - a1.name = 'foo' | |
162 | - a1.save! | |
163 | - assert_equal 3, ActionTracker::Record.count | |
164 | - a2.name = 'another foo' | |
165 | - a2.save! | |
166 | - assert_equal 4, ActionTracker::Record.count | |
164 | + assert_no_difference ActionTracker::Record, :count do | |
165 | + a1.name = 'foo';a1.save! | |
166 | + a2.name = 'another foo';a2.save! | |
167 | + end | |
167 | 168 | end |
168 | 169 | |
169 | - should 'notify activity on destroy' do | |
170 | - ActionTracker::Record.delete_all | |
171 | - a = TinyMceArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | |
172 | - assert_equal 1, ActionTracker::Record.count | |
173 | - a.destroy | |
174 | - assert_equal 2, ActionTracker::Record.count | |
175 | - end | |
176 | - | |
177 | - should 'notify different activities when destroy articles with diferrents targets' do | |
170 | + should 'not notify when an article is destroyed' do | |
178 | 171 | ActionTracker::Record.delete_all |
179 | 172 | a1 = TinyMceArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true |
180 | 173 | a2 = TinyMceArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true |
181 | - assert_equal 2, ActionTracker::Record.count | |
182 | - a1.destroy | |
183 | - assert_equal 3, ActionTracker::Record.count | |
184 | - a2.destroy | |
185 | - assert_equal 4, ActionTracker::Record.count | |
174 | + assert_no_difference ActionTracker::Record, :count do | |
175 | + a1.destroy | |
176 | + a2.destroy | |
177 | +end | |
186 | 178 | end |
187 | 179 | |
188 | - should "the tracker action target be defined as Community by custom_target method on articles'creation in communities" do | |
180 | + should "the tracker action target be defined as the article on articles'creation in communities" do | |
189 | 181 | ActionTracker::Record.delete_all |
190 | 182 | community = fast_create(Community) |
191 | 183 | p1 = Person.first |
192 | 184 | community.add_member(p1) |
193 | 185 | assert p1.is_member_of?(community) |
194 | 186 | article = TinyMceArticle.create! :name => 'test', :profile_id => community.id |
195 | - assert_equal true, article.published? | |
196 | - assert_equal true, article.notifiable? | |
197 | - assert_equal false, article.image? | |
198 | - assert_equal Community, article.profile.class | |
199 | - assert_equal Community, ActionTracker::Record.last.target.class | |
187 | + assert_equal article, ActionTracker::Record.last.target | |
200 | 188 | end |
201 | 189 | |
202 | - should "the tracker action target be defined as person by custom_target method on articles'creation in profile" do | |
190 | + should "the tracker action target be defined as the article on articles'creation in profile" do | |
203 | 191 | ActionTracker::Record.delete_all |
204 | 192 | person = Person.first |
205 | 193 | article = TinyMceArticle.create! :name => 'test', :profile_id => person.id |
206 | - assert_equal true, article.published? | |
207 | - assert_equal true, article.notifiable? | |
208 | - assert_equal false, article.image? | |
209 | - assert_equal Person, article.profile.class | |
210 | - assert_equal person, ActionTracker::Record.last.target | |
194 | + assert_equal article, ActionTracker::Record.last.target | |
211 | 195 | end |
212 | 196 | |
213 | 197 | should 'not notify activity if the article is not advertise' do | ... | ... |
vendor/plugins/access_control/lib/role_assignment.rb
... | ... | @@ -9,10 +9,6 @@ class RoleAssignment < ActiveRecord::Base |
9 | 9 | |
10 | 10 | track_actions :add_member_in_community, :after_create, :if => Proc.new { |x| x.resource.is_a?(Community) && x.accessor.role_assignments.count(:conditions => { :resource_id => x.resource.id, :resource_type => 'Profile' }) == 1 }, :custom_user => :accessor, :custom_target => :resource |
11 | 11 | |
12 | - track_actions :leave_community, :before_destroy, :keep_params => ["resource.name", "resource.url", "resource.profile_custom_icon"], :if => Proc.new { |x| x.resource.is_a?(Community) && x.accessor.role_assignments.count(:conditions => { :resource_id => x.resource.id, :resource_type => 'Profile' }) == 1 }, :custom_user => :accessor, :custom_target => :resource | |
13 | - | |
14 | - track_actions :remove_member_in_community, :before_destroy, :if => Proc.new { |x| x.resource.is_a?(Community) && x.accessor.role_assignments.count(:conditions => { :resource_id => x.resource.id, :resource_type => 'Profile' }) == 1 }, :custom_target => :resource, :custom_user => :accessor | |
15 | - | |
16 | 12 | def has_permission?(perm, res) |
17 | 13 | return false unless role.has_permission?(perm.to_s) && (resource || is_global) |
18 | 14 | return true if is_global | ... | ... |