aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/outgoing_message.rb18
-rw-r--r--app/models/request_mailer.rb20
-rw-r--r--app/views/request_mailer/initial_request.rhtml7
-rw-r--r--test/fixtures/request_mailer/initial_request3
-rw-r--r--test/unit/request_mailer_test.rb35
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