diff options
-rw-r--r-- | app/models/outgoing_message.rb | 18 | ||||
-rw-r--r-- | app/models/request_mailer.rb | 20 | ||||
-rw-r--r-- | app/views/request_mailer/initial_request.rhtml | 7 | ||||
-rw-r--r-- | test/fixtures/request_mailer/initial_request | 3 | ||||
-rw-r--r-- | test/unit/request_mailer_test.rb | 35 |
5 files changed, 82 insertions, 1 deletions
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb index cc1b7ad54..ed2b415ae 100644 --- a/app/models/outgoing_message.rb +++ b/app/models/outgoing_message.rb @@ -5,7 +5,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: outgoing_message.rb,v 1.4 2007-09-12 15:56:18 francis Exp $ +# $Id: outgoing_message.rb,v 1.5 2007-10-16 08:57:32 francis Exp $ class OutgoingMessage < ActiveRecord::Base belongs_to :info_request @@ -15,5 +15,21 @@ class OutgoingMessage < ActiveRecord::Base validates_inclusion_of :status, :in => ['ready', 'sent', 'failed'] validates_inclusion_of :message_type, :in => ['initial_request'] #, 'complaint'] + + def send_message + if message_type == 'initial_request' + if status == 'ready' + # test this with: + # InfoRequest.find(1).outgoing_messages[0].send_message + + RequestMailer.deliver_initial_request(info_request, self) + else + raise "Message id #{id} not ready for send_message" + end + else + raise "Message id #{id} has type '#{message_type}' which send_message can't handle" + end + + end end diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb new file mode 100644 index 000000000..c6b99159e --- /dev/null +++ b/app/models/request_mailer.rb @@ -0,0 +1,20 @@ +# models/request_mailer.rb: +# Emails which go to public bodies on behalf of users. +# +# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. +# Email: francis@mysociety.org; WWW: http://www.mysociety.org/ +# +# $Id: request_mailer.rb,v 1.1 2007-10-16 08:57:32 francis Exp $ + +class RequestMailer < ActionMailer::Base + + def initial_request(info_request, outgoing_message) + @from = 'francis@flourish.org' # XXX + @recipients = 'frabcus@fastmail.fm' + # XXX check with staging site + #@recipients = info_request.public_body.request_email + @subject = 'Freedom of Information Request - ' + info_request.title + @body = {:info_request => info_request, :outgoing_message => outgoing_message} + end + +end diff --git a/app/views/request_mailer/initial_request.rhtml b/app/views/request_mailer/initial_request.rhtml new file mode 100644 index 000000000..795773c74 --- /dev/null +++ b/app/views/request_mailer/initial_request.rhtml @@ -0,0 +1,7 @@ +Dear <%= @info_request.public_body.name %>, + +<%= @outgoing_message.body %> + +----------- + +This message was sent using FOIFA. Blah. diff --git a/test/fixtures/request_mailer/initial_request b/test/fixtures/request_mailer/initial_request new file mode 100644 index 000000000..38d5f755c --- /dev/null +++ b/test/fixtures/request_mailer/initial_request @@ -0,0 +1,3 @@ +RequestMailer#initial_request + +Find me in app/views/request_mailer/initial_request.rhtml diff --git a/test/unit/request_mailer_test.rb b/test/unit/request_mailer_test.rb new file mode 100644 index 000000000..99bbf1b86 --- /dev/null +++ b/test/unit/request_mailer_test.rb @@ -0,0 +1,35 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class RequestMailerTest < Test::Unit::TestCase + FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures' + CHARSET = "utf-8" + + include ActionMailer::Quoting + + def setup + ActionMailer::Base.delivery_method = :test + ActionMailer::Base.perform_deliveries = true + ActionMailer::Base.deliveries = [] + + @expected = TMail::Mail.new + @expected.set_content_type "text", "plain", { "charset" => CHARSET } + @expected.mime_version = '1.0' + end + + def test_initial_request + @expected.subject = 'RequestMailer#initial_request' + @expected.body = read_fixture('initial_request') + @expected.date = Time.now + + assert_equal @expected.encoded, RequestMailer.create_initial_request(@expected.date).encoded + end + + private + def read_fixture(action) + IO.readlines("#{FIXTURES_PATH}/request_mailer/#{action}") + end + + def encode(subject) + quoted_printable(subject, CHARSET) + end +end |