Commit 1400ff7105bb71c2f125b5e718bb1848dca79309
Committed by
Antonio Terceiro
1 parent
87b6e60c
Exists in
master
and in
23 other branches
Allowed scrap replies on a community
(ActionItem1765)
Showing
6 changed files
with
37 additions
and
2 deletions
Show diff stats
app/models/community.rb
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 < Test::Unit::TestCase | @@ -313,4 +313,9 @@ class CommunityTest < 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 < Test::Unit::TestCase | @@ -1111,4 +1111,9 @@ class PersonTest < 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 < Test::Unit::TestCase | @@ -55,6 +55,15 @@ class ScrapNotifierTest < 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) |