From a2729ab271c348541921c1404ff20c4a092ba038 Mon Sep 17 00:00:00 2001 From: Luca Guidi Date: Wed, 23 Sep 2015 17:45:30 +0200 Subject: [PATCH] Raise error when from/to delivery data is missing --- lib/lotus/mailer.rb | 8 ++++++++ test/delivery_test.rb | 24 ++++++++++++++++-------- test/fixtures.rb | 16 ++++++++++++++++ test/fixtures/templates/missing.txt.erb | 1 + 4 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/templates/missing.txt.erb diff --git a/lib/lotus/mailer.rb b/lib/lotus/mailer.rb index 9b87979..7c14dd4 100644 --- a/lib/lotus/mailer.rb +++ b/lib/lotus/mailer.rb @@ -8,6 +8,12 @@ module Lotus module Mailer + class MissingDeliveryDataError < ::StandardError + def initialize + super("Missing delivery data, please check 'from', 'to' and 'subject'") + end + end + DEFAULT_TEMPLATE = :txt.freeze CONTENT_TYPES = { @@ -134,6 +140,8 @@ module InstanceMethods # @since 0.1.0 def deliver mail.deliver + rescue ArgumentError + raise MissingDeliveryDataError end end diff --git a/test/delivery_test.rb b/test/delivery_test.rb index 3ba3536..4406189 100644 --- a/test/delivery_test.rb +++ b/test/delivery_test.rb @@ -6,6 +6,22 @@ Lotus::Mailer.deliveries.clear end + it 'can deliver with specified charset' do + CharsetMailer.deliver(charset: charset = 'iso-2022-jp') + + mail = Lotus::Mailer.deliveries.first + mail.charset.must_equal charset + mail.parts.first.charset.must_equal charset + end + + it "raises error when 'from' isn't specified" do + -> { MissingFromMailer.deliver }.must_raise Lotus::Mailer::MissingDeliveryDataError + end + + it "raises error when 'to' isn't specified" do + -> { MissingToMailer.deliver }.must_raise Lotus::Mailer::MissingDeliveryDataError + end + describe 'test delivery with hardcoded values' do before do WelcomeMailer.deliver @@ -102,14 +118,6 @@ body.must_include %(

Hello World!

) body.wont_include %(This is a txt template) end - - it 'can deliver with specified charset' do - CharsetMailer.deliver(charset: charset = 'iso-2022-jp') - - mail = Lotus::Mailer.deliveries.first - mail.charset.must_equal charset - mail.parts.first.charset.must_equal charset - end end # describe 'custom delivery' do diff --git a/test/fixtures.rb b/test/fixtures.rb index 14db975..11dc407 100644 --- a/test/fixtures.rb +++ b/test/fixtures.rb @@ -19,6 +19,22 @@ class CharsetMailer subject 'こんにちは' end +class MissingFromMailer + include Lotus::Mailer + template 'missing' + + to "recipient@example.com" + subject "Hello" +end + +class MissingToMailer + include Lotus::Mailer + template 'missing' + + from "sender@example.com" + subject "Hello" +end + class User < Struct.new(:name, :email); end class LazyMailer diff --git a/test/fixtures/templates/missing.txt.erb b/test/fixtures/templates/missing.txt.erb new file mode 100644 index 0000000..b69a6b1 --- /dev/null +++ b/test/fixtures/templates/missing.txt.erb @@ -0,0 +1 @@ +Missin'