diff options
author | Andrew Kaspick <andrew@redlinesoftware.com> | 2011-08-11 17:49:31 -0500 |
---|---|---|
committer | Andrew Kaspick <andrew@redlinesoftware.com> | 2011-08-11 17:49:31 -0500 |
commit | 60d358b23348a14447d176fa51624ad5434eb575 (patch) | |
tree | d82803881241e15fdbdea6915f0fde5b7e1d284a /actionpack | |
parent | e6fdfd0f6f80d47c97152826322ea8b01519b5c2 (diff) | |
download | rails-60d358b23348a14447d176fa51624ad5434eb575.tar.gz rails-60d358b23348a14447d176fa51624ad5434eb575.tar.bz2 rails-60d358b23348a14447d176fa51624ad5434eb575.zip |
fix assert_select_email to work on non-multipart emails as well as converting the Mail::Body to a string to prevent errors.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/testing/assertions/selector.rb | 4 | ||||
-rw-r--r-- | actionpack/test/controller/assert_select_test.rb | 19 |
2 files changed, 21 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/testing/assertions/selector.rb b/actionpack/lib/action_dispatch/testing/assertions/selector.rb index 5fa91d1a76..b4555f4f59 100644 --- a/actionpack/lib/action_dispatch/testing/assertions/selector.rb +++ b/actionpack/lib/action_dispatch/testing/assertions/selector.rb @@ -415,9 +415,9 @@ module ActionDispatch assert !deliveries.empty?, "No e-mail in delivery list" for delivery in deliveries - for part in delivery.parts + for part in (delivery.parts.empty? ? [delivery] : delivery.parts) if part["Content-Type"].to_s =~ /^text\/html\W/ - root = HTML::Document.new(part.body).root + root = HTML::Document.new(part.body.to_s).root assert_select root, ":root", &block end end diff --git a/actionpack/test/controller/assert_select_test.rb b/actionpack/test/controller/assert_select_test.rb index 878484eb57..5eef8a32d7 100644 --- a/actionpack/test/controller/assert_select_test.rb +++ b/actionpack/test/controller/assert_select_test.rb @@ -20,6 +20,15 @@ class AssertSelectTest < ActionController::TestCase 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 + class AssertSelectController < ActionController::Base def response_with=(content) @content = content @@ -313,6 +322,16 @@ EOF 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 def render_html(html) @controller.response_with = html |