Commit 1400ff7105bb71c2f125b5e718bb1848dca79309

Authored by Daniela Feitosa
Committed by Antonio Terceiro
1 parent 87b6e60c

Allowed scrap replies on a community

(ActionItem1765)
app/models/community.rb
@@ -75,4 +75,8 @@ class Community < Organization @@ -75,4 +75,8 @@ class Community < Organization
75 end 75 end
76 end 76 end
77 77
  78 + def receives_scrap_notification?
  79 + false
  80 + end
  81 +
78 end 82 end
app/models/person.rb
@@ -44,6 +44,10 @@ class Person < Profile @@ -44,6 +44,10 @@ class Person < Profile
44 end 44 end
45 end 45 end
46 46
  47 + def receives_scrap_notification?
  48 + true
  49 + end
  50 +
47 def can_control_activity?(activity) 51 def can_control_activity?(activity)
48 self.tracked_notifications.exists?(activity) 52 self.tracked_notifications.exists?(activity)
49 end 53 end
app/models/scrap.rb
@@ -16,7 +16,7 @@ class Scrap < ActiveRecord::Base @@ -16,7 +16,7 @@ class Scrap < ActiveRecord::Base
16 16
17 after_create do |scrap| 17 after_create do |scrap|
18 scrap.root.update_attribute('updated_at', DateTime.now) unless scrap.root.nil? 18 scrap.root.update_attribute('updated_at', DateTime.now) unless scrap.root.nil?
19 - Scrap::Notifier.deliver_mail(scrap) if !scrap.receiver.is_a?(Community) && !(scrap.sender == scrap.receiver) 19 + Scrap::Notifier.deliver_mail(scrap) if scrap.send_notification?
20 end 20 end
21 21
22 before_validation :strip_all_html_tags 22 before_validation :strip_all_html_tags
@@ -30,8 +30,16 @@ class Scrap < ActiveRecord::Base @@ -30,8 +30,16 @@ class Scrap < ActiveRecord::Base
30 self.receiver.is_a?(Community) ? self.receiver : self 30 self.receiver.is_a?(Community) ? self.receiver : self
31 end 31 end
32 32
  33 + def is_root?
  34 + !root.nil?
  35 + end
  36 +
33 def scrap_wall_url 37 def scrap_wall_url
34 - self.root.nil? ? self.receiver.wall_url : self.root.receiver.wall_url 38 + is_root? ? root.receiver.wall_url : receiver.wall_url
  39 + end
  40 +
  41 + def send_notification?
  42 + sender != receiver && (is_root? ? root.receiver.receives_scrap_notification? : receiver.receives_scrap_notification?)
35 end 43 end
36 44
37 class Notifier < ActionMailer::Base 45 class Notifier < ActionMailer::Base
test/unit/community_test.rb
@@ -313,4 +313,9 @@ class CommunityTest &lt; Test::Unit::TestCase @@ -313,4 +313,9 @@ class CommunityTest &lt; Test::Unit::TestCase
313 assert_equal s2, c.scraps(s2.id.to_s) 313 assert_equal s2, c.scraps(s2.id.to_s)
314 end 314 end
315 315
  316 + should 'receive scrap notification' do
  317 + community = fast_create(Community)
  318 + assert_equal false, community.receives_scrap_notification?
  319 + end
  320 +
316 end 321 end
test/unit/person_test.rb
@@ -1111,4 +1111,9 @@ class PersonTest &lt; Test::Unit::TestCase @@ -1111,4 +1111,9 @@ class PersonTest &lt; Test::Unit::TestCase
1111 assert_equal({ :host => "mycolivre.net", :profile => 'testprofile', :controller => 'profile', :action => 'index', :anchor => 'profile-wall' }, profile.wall_url) 1111 assert_equal({ :host => "mycolivre.net", :profile => 'testprofile', :controller => 'profile', :action => 'index', :anchor => 'profile-wall' }, profile.wall_url)
1112 end 1112 end
1113 1113
  1114 + should 'receive scrap notification' do
  1115 + person = fast_create(Person)
  1116 + assert person.receives_scrap_notification?
  1117 + end
  1118 +
1114 end 1119 end
test/unit/scrap_notifier_test.rb
@@ -55,6 +55,15 @@ class ScrapNotifierTest &lt; Test::Unit::TestCase @@ -55,6 +55,15 @@ class ScrapNotifierTest &lt; Test::Unit::TestCase
55 end 55 end
56 end 56 end
57 57
  58 + should 'not deliver mail if is a reply on a community' do
  59 + community = fast_create(Community)
  60 + person = fast_create(Person)
  61 + scrap = fast_create(Scrap, :receiver_id => community.id, :sender_id => @sender.id)
  62 + assert_no_difference ActionMailer::Base.deliveries, :size do
  63 + Scrap.create!(:sender => person, :receiver => @sender, :scrap_id => scrap.id, :content => 'Hi myself!')
  64 + end
  65 + end
  66 +
58 private 67 private
59 68
60 def read_fixture(action) 69 def read_fixture(action)