require 'abstract_unit'
require 'action_controller'
class AssetHostMailer < ActionMailer::Base
def email_with_asset
recipients 'test@localhost'
subject "testing email containing asset path while asset_host is set"
from "tester@example.com"
end
end
class AssetHostTest < Test::Unit::TestCase
def setup
set_delivery_method :test
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries.clear
AssetHostMailer.configure do |c|
c.asset_host = "http://www.example.com"
c.assets_dir = ''
end
end
def teardown
restore_delivery_method
end
def test_asset_host_as_string
mail = AssetHostMailer.email_with_asset
assert_equal "
", mail.body.to_s.strip
end
def test_asset_host_as_one_arguement_proc
AssetHostMailer.config.asset_host = Proc.new { |source|
if source.starts_with?('/images')
"http://images.example.com"
else
"http://assets.example.com"
end
}
mail = AssetHostMailer.email_with_asset
assert_equal "
", mail.body.to_s.strip
end
def test_asset_host_as_two_arguement_proc
ActionController::Base.asset_host = Proc.new {|source,request|
if request && request.ssl?
"https://www.example.com"
else
"http://www.example.com"
end
}
mail = nil
assert_nothing_raised { mail = AssetHostMailer.email_with_asset }
assert_equal "
", mail.body.to_s.strip
end
end