require File.expand_path(File.dirname(__FILE__) + '/helper')
describe "Part" do
describe "the part" do
it 'should use correctly parts' do
message = Mail::Message.new do
views File.dirname(__FILE__) + '/fixtures/views/mailers'
to 'padrino@test.lindsaar.net'
subject 'nested multipart'
from 'test@example.com'
text_part do
body 'plain text'
end
html_part do
render 'sample/foo'
end
part do
body 'other'
end
end
refute_nil message.html_part
refute_nil message.text_part
assert_equal 4, message.parts.length
assert_equal :plain, message.parts[0].content_type
assert_equal 'plain text', message.parts[0].body.decoded
assert_equal :html, message.parts[1].content_type
assert_equal 'This is a foo message in mailers/sample dir', message.parts[1].body.decoded.chomp
assert_equal :plain, message.parts[2].content_type
assert_equal 'other', message.parts[2].body.decoded
assert_equal 'This is a foo message in mailers/sample dir', message.html_part.body.decoded.chomp
assert_equal 'plain text', message.text_part.body.decoded
end
it 'should works with multipart templates' do
message = Mail::Message.new do
views File.dirname(__FILE__) + '/fixtures/views/mailers'
to 'padrino@test.lindsaar.net'
subject 'nested multipart'
from 'test@example.com'
text_part do
render 'multipart/basic.text'
end
html_part do
render 'multipart/basic.html'
end
end
refute_nil message.html_part
refute_nil message.text_part
assert_equal 2, message.parts.length
assert_equal :plain, message.parts[0].content_type
assert_equal 'plain text', message.parts[0].body.decoded.chomp
assert_equal :html, message.parts[1].content_type
assert_equal 'text html', message.parts[1].body.decoded.chomp
end
it 'should works with less explict multipart templates' do
message = Mail::Message.new do
views File.dirname(__FILE__) + '/fixtures/views/mailers'
to 'padrino@test.lindsaar.net'
subject 'nested multipart'
from 'test@example.com'
text_part { render('multipart/basic.plain') }
html_part { render('multipart/basic.html') }
end
refute_nil message.html_part
refute_nil message.text_part
assert_equal 2, message.parts.length
assert_equal :plain, message.parts[0].content_type
assert_equal 'plain text', message.parts[0].body.decoded.chomp
assert_equal :html, message.parts[1].content_type
assert_equal 'text html', message.parts[1].body.decoded.chomp
end
it 'should works with provides' do
message = Mail::Message.new do
views File.dirname(__FILE__) + '/fixtures/views/mailers'
to 'padrino@test.lindsaar.net'
subject 'nested multipart'
from 'test@example.com'
provides :plain, :html
render 'multipart/basic'
end
assert_match /^multipart\/alternative/, message['content-type'].value
assert_equal 2, message.parts.length
assert_equal :plain, message.parts[0].content_type
assert_equal 'plain text', message.parts[0].body.decoded.chomp
assert_equal :html, message.parts[1].content_type
assert_equal 'text html', message.parts[1].body.decoded.chomp
end
# it 'should provide a way to instantiate a new part as you go down' do
# message = Mail::Message.new do
# to 'padrino@test.lindsaar.net'
# subject "nested multipart"
# from "test@example.com"
# content_type "multipart/mixed"
#
# part :content_type => "multipart/alternative", :content_disposition => "inline", :headers => { "foo" => "bar" } do |p|
# p.part :content_type => "text/plain", :body => "test text\nline #2"
# p.part :content_type => "text/html", :body => "test HTML
\nline #2"
# end
# end
#
# assert_equal 2, message.parts.first.parts.length
# assert_equal :plain, message.parts.first.parts[0].content_type
# assert_equal "test text\nline #2", message.parts.first.parts[0].body.decoded
# assert_equal :html, message.parts.first.parts[1].content_type
# assert_equal "test HTML
\nline #2", message.parts.first.parts[1].body.decoded
# end
end
end