Commit e0fed871b6ee1027d616c8b426bf948ad1167ed2

Authored by Rodrigo Souto
1 parent f02d36c9

rails3: fix scrap_notifier

app/mailers/scrap_notifier.rb 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +class Scrap::Notifier < ActionMailer::Base
  2 + def notification(scrap)
  3 + sender, receiver = scrap.sender, scrap.receiver
  4 + @recipient = receiver.name
  5 + @sender = sender.name
  6 + @sender_link = sender.url
  7 + @scrap_content = scrap.content
  8 + @wall_url = scrap.scrap_wall_url
  9 + @environment = sender.environment.name
  10 + @url = sender.environment.top_url
  11 + mail(
  12 + to: receiver.email,
  13 + from: "#{sender.environment.name} <#{sender.environment.contact_email}>",
  14 + subject: _("[%s] You received a scrap!") % [sender.environment.name]
  15 + )
  16 + end
  17 +end
... ...
app/models/scrap.rb
... ... @@ -23,7 +23,7 @@ class Scrap &lt; ActiveRecord::Base
23 23  
24 24 after_create do |scrap|
25 25 scrap.root.update_attribute('updated_at', DateTime.now) unless scrap.root.nil?
26   - Scrap::Notifier.deliver_mail(scrap) if scrap.send_notification?
  26 + Scrap::Notifier.notification(scrap).deliver if scrap.send_notification?
27 27 end
28 28  
29 29 before_validation :strip_all_html_tags
... ... @@ -49,21 +49,4 @@ class Scrap &lt; ActiveRecord::Base
49 49 sender != receiver && (is_root? ? root.receiver.receives_scrap_notification? : receiver.receives_scrap_notification?)
50 50 end
51 51  
52   - class Notifier < ActionMailer::Base
53   - def mail(scrap)
54   - sender, receiver = scrap.sender, scrap.receiver
55   - recipients receiver.email
56   -
57   - from "#{sender.environment.name} <#{sender.environment.contact_email}>"
58   - subject _("[%s] You received a scrap!") % [sender.environment.name]
59   - body :recipient => receiver.name,
60   - :sender => sender.name,
61   - :sender_link => sender.url,
62   - :scrap_content => scrap.content,
63   - :wall_url => scrap.scrap_wall_url,
64   - :environment => sender.environment.name,
65   - :url => sender.environment.top_url
66   - end
67   - end
68   -
69 52 end
... ...
app/views/scrap/notifier/mail.html.erb
... ... @@ -1,16 +0,0 @@
1   -<%= _('Hi, %{recipient}!') % { :recipient => @recipient } %>
2   -
3   -<%= word_wrap(_('%{sender} (%{sender_link}) has left the following scrap for you:') % { :sender => @sender, :sender_link => url_for(@sender_link) }) %>
4   -
5   --------------------------------------------------------------------------------
6   -<%= word_wrap(@scrap_content) %>
7   --------------------------------------------------------------------------------
8   -
9   -<%= _('View this scrap on the wall') %>:
10   -<%= url_for @wall_url %>
11   -
12   -<%= _("Greetings,") %>
13   -
14   ---
15   -<%= _('%s team.') % @environment %>
16   -<%= url_for @url %>
app/views/scrap/notifier/notification.html.erb 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +<%= _('Hi, %{recipient}!') % { :recipient => @recipient } %>
  2 +
  3 +<%= word_wrap(_('%{sender} (%{sender_link}) has left the following scrap for you:') % { :sender => @sender, :sender_link => url_for(@sender_link) }) %>
  4 +
  5 +-------------------------------------------------------------------------------
  6 +<%= word_wrap(@scrap_content) %>
  7 +-------------------------------------------------------------------------------
  8 +
  9 +<%= _('View this scrap on the wall') %>:
  10 +<%= url_for @wall_url %>
  11 +
  12 +<%= _("Greetings,") %>
  13 +
  14 +--
  15 +<%= _('%s team.') % @environment %>
  16 +<%= url_for @url %>
... ...
test/unit/scrap_notifier_test.rb
... ... @@ -34,19 +34,19 @@ class ScrapNotifierTest &lt; ActiveSupport::TestCase
34 34 should 'display sender name in delivered mail' do
35 35 Scrap.create!(:sender_id => @sender.id, :receiver_id => @receiver.id, :content => 'Hi man!')
36 36 sent = ActionMailer::Base.deliveries.first
37   - assert_match /user_scrap_sender_test/, sent.body
  37 + assert_match /user_scrap_sender_test/, sent.body.to_s
38 38 end
39 39  
40 40 should 'display scrap content in delivered mail' do
41 41 Scrap.create!(:sender_id => @sender.id, :receiver_id => @receiver.id, :content => 'Hi man!')
42 42 sent = ActionMailer::Base.deliveries.first
43   - assert_match /Hi man!/, sent.body
  43 + assert_match /Hi man!/, sent.body.to_s
44 44 end
45 45  
46 46 should 'display receiver wall link in delivered mail' do
47 47 Scrap.create!(:sender_id => @sender.id, :receiver_id => @receiver.id, :content => 'Hi man!')
48 48 sent = ActionMailer::Base.deliveries.first
49   - assert_match /\/profile\/user_scrap_receiver_test#profile-wall/, sent.body
  49 + assert_match /\/profile\/user_scrap_receiver_test#profile-wall/, sent.body.to_s
50 50 end
51 51  
52 52 should 'not deliver mail if notify receiver and sender are the same person' do
... ...