diff options
-rw-r--r-- | Gemfile | 2 | ||||
-rw-r--r-- | actionmailer/test/assert_select_email_test.rb | 63 |
2 files changed, 65 insertions, 0 deletions
@@ -15,6 +15,8 @@ gem 'jquery-rails', '~> 3.1.0' gem 'turbolinks' gem 'coffee-rails', '~> 4.0.0' gem 'arel', github: 'rails/arel', branch: 'master' +gem 'rails-dom-testing', github: 'kaspth/rails-dom-testing' +gem 'rails-html-sanitizer', github: 'rafaelfranca/rails-html-sanitizer' gem 'sprockets-rails', github: 'rails/sprockets-rails', branch: 'master' gem 'i18n', github: 'svenfuchs/i18n', branch: 'master' diff --git a/actionmailer/test/assert_select_email_test.rb b/actionmailer/test/assert_select_email_test.rb new file mode 100644 index 0000000000..c1a03ac5a3 --- /dev/null +++ b/actionmailer/test/assert_select_email_test.rb @@ -0,0 +1,63 @@ +require 'abstract_unit' +require 'rails-dom-testing' + +class AssertSelectEmailTest < ActionMailer::TestCase + Assertion = ActiveSupport::TestCase::Assertion + + include Rails::Dom::Testing::Assertions::SelectorAssertions + + class AssertSelectMailer < ActionMailer::Base + def test(html) + mail :body => html, :content_type => "text/html", + :subject => "Test e-mail", :from => "test@test.host", :to => "test <test@test.host>" + end + end + + class AssertMultipartSelectMailer < ActionMailer::Base + def test(options) + mail :subject => "Test e-mail", :from => "test@test.host", :to => "test <test@test.host>" do |format| + format.text { render :text => options[:text] } + format.html { render :text => options[:html] } + end + end + end + + # + # Test assert_select_email + # + + def setup + @response = FakeResponse.new(:html, 'some body text') + end + + def test_assert_select_email + assert_raise(Assertion) { assert_select_email {} } + AssertSelectMailer.test("<div><p>foo</p><p>bar</p></div>").deliver + assert_select_email do + assert_select "div:root" do + assert_select "p:first-child", "foo" + assert_select "p:last-child", "bar" + end + end + end + + def test_assert_select_email_multipart + AssertMultipartSelectMailer.test(:html => "<div><p>foo</p><p>bar</p></div>", :text => 'foo bar').deliver + assert_select_email do + assert_select "div:root" do + assert_select "p:first-child", "foo" + assert_select "p:last-child", "bar" + end + end + end + + protected + + class FakeResponse + attr_accessor :content_type, :body + + def initialize(content_type, body) + @content_type, @body = content_type, body + end + end +end
\ No newline at end of file |