Commit 5aa38f73e6599774c6f5d9ba9515f30442a4cc8a
1 parent
2140347f
Exists in
master
and in
28 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 | ... | ... |