Skip to content
Browse files

Register mailer tests for minitest's spec DSL

  • Loading branch information...
1 parent 52db1f9 commit 0ce383db58b4718147433ca0e06d7e88efd6c184 @blowmage blowmage committed Sep 24, 2012
Showing with 44 additions and 0 deletions.
  1. +7 −0 actionmailer/lib/action_mailer/test_case.rb
  2. +37 −0 actionmailer/test/spec_type_test.rb
View
7 actionmailer/lib/action_mailer/test_case.rb
@@ -10,6 +10,13 @@ def initialize(name)
end
class TestCase < ActiveSupport::TestCase
+
+ # Use AM::TestCase for the base class when describing a mailer
+ register_spec_type(self) do |desc|
+ Class === desc && desc < ActionMailer::Base
+ end
+ register_spec_type(/Mailer( ?Test)?\z/i, self)
+
module Behavior
extend ActiveSupport::Concern
View
37 actionmailer/test/spec_type_test.rb
@@ -0,0 +1,37 @@
+require 'abstract_unit'
+
+class NotificationMailer < ActionMailer::Base; end
+class Notifications < ActionMailer::Base; end
+
+class SpecTypeTest < ActiveSupport::TestCase
+ def assert_mailer actual
+ assert_equal ActionMailer::TestCase, actual
+ end
+
+ def refute_mailer actual
+ refute_equal ActionMailer::TestCase, actual
+ end
+
+ def test_spec_type_resolves_for_class_constants
+ assert_mailer MiniTest::Spec.spec_type(NotificationMailer)
+ assert_mailer MiniTest::Spec.spec_type(Notifications)
+ end
+
+ def test_spec_type_resolves_for_matching_strings
+ assert_mailer MiniTest::Spec.spec_type("WidgetMailer")
+ assert_mailer MiniTest::Spec.spec_type("WidgetMailerTest")
+ assert_mailer MiniTest::Spec.spec_type("Widget Mailer Test")
+ # And is not case sensitive
+ assert_mailer MiniTest::Spec.spec_type("widgetmailer")
+ assert_mailer MiniTest::Spec.spec_type("widgetmailertest")
+ assert_mailer MiniTest::Spec.spec_type("widget mailer test")
+ end
+
+ def test_spec_type_wont_match_non_space_characters
+ refute_mailer MiniTest::Spec.spec_type("Widget Mailer\tTest")
+ refute_mailer MiniTest::Spec.spec_type("Widget Mailer\rTest")
+ refute_mailer MiniTest::Spec.spec_type("Widget Mailer\nTest")
+ refute_mailer MiniTest::Spec.spec_type("Widget Mailer\fTest")
+ refute_mailer MiniTest::Spec.spec_type("Widget MailerXTest")
+ end
+end

0 comments on commit 0ce383d

Please sign in to comment.
Something went wrong with that request. Please try again.