Commit 5aa38f73e6599774c6f5d9ba9515f30442a4cc8a

Authored by Daniela Feitosa
1 parent 2140347f

Fixing tests

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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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
... ...