Commit 3da8991d18aed857ac9a2563c21af9aaa2914fbe

Authored by Rodrigo Souto
2 parents 60c6ac65 6f89292c

Merge commit 'refs/merge-requests/341' of git://gitorious.org/noosfero/noosfero …

…into merge-requests/341
lib/notify_activity_to_profiles_job.rb
... ... @@ -10,7 +10,7 @@ class NotifyActivityToProfilesJob < Struct.new(:tracked_action_id)
10 10 return unless ActionTracker::Record.exists?(tracked_action_id)
11 11 tracked_action = ActionTracker::Record.find(tracked_action_id)
12 12 target = tracked_action.target
13   - if target.is_a?(Community) && NOTIFY_ONLY_COMMUNITY.include?(tracked_action.verb)
  13 + if target.is_a?(Community) && ( NOTIFY_ONLY_COMMUNITY.include?(tracked_action.verb) || ! target.public_profile )
14 14 ActionTrackerNotification.create(:profile_id => target.id, :action_tracker_id => tracked_action.id)
15 15 return
16 16 end
... ...
test/unit/notify_activity_to_profiles_job_test.rb
... ... @@ -88,6 +88,31 @@ class NotifyActivityToProfilesJobTest < ActiveSupport::TestCase
88 88 end
89 89 end
90 90  
  91 + should 'notify only the community if it is private' do
  92 + person = fast_create(Person)
  93 + private_community = fast_create(Community, :public_profile => false)
  94 + action_tracker = fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => person.id, :target_type => 'Profile', :target_id => private_community.id, :verb => 'create_article')
  95 + assert !NotifyActivityToProfilesJob::NOTIFY_ONLY_COMMUNITY.include?(action_tracker.verb)
  96 + p1, p2, m1, m2 = fast_create(Person), fast_create(Person), fast_create(Person), fast_create(Person)
  97 + fast_create(Friendship, :person_id => person.id, :friend_id => p1.id)
  98 + fast_create(Friendship, :person_id => person.id, :friend_id => p2.id)
  99 + fast_create(RoleAssignment, :accessor_id => m1.id, :role_id => 3, :resource_id => private_community.id)
  100 + fast_create(RoleAssignment, :accessor_id => m2.id, :role_id => 3, :resource_id => private_community.id)
  101 + ActionTrackerNotification.delete_all
  102 + job = NotifyActivityToProfilesJob.new(action_tracker.id)
  103 + job.perform
  104 + process_delayed_job_queue
  105 +
  106 + assert_equal 1, ActionTrackerNotification.count
  107 + [person, p1, p2, m1, m2].each do |profile|
  108 + notification = ActionTrackerNotification.find_by_profile_id profile.id
  109 + assert notification.nil?
  110 + end
  111 +
  112 + notification = ActionTrackerNotification.find_by_profile_id private_community.id
  113 + assert_equal action_tracker, notification.action_tracker
  114 + end
  115 +
91 116 should 'not notify the community tracking join_community verb' do
92 117 person = fast_create(Person)
93 118 community = fast_create(Community)
... ...