class ActionMailerUrlTest

Public Instance Methods

assert_url_for(expected, options, relative = false) click to toggle source
# File actionmailer/test/url_test.rb, line 68
def assert_url_for(expected, options, relative = false)
  expected = "http://www.basecamphq.com#{expected}" if expected.start_with?("/") && !relative
  urls = UrlTestMailer.exercise_url_for(options).body.to_s.chomp.split

  assert_equal expected, urls.first
  assert_equal expected, urls.second
end
encode(text, charset = "UTF-8") click to toggle source
# File actionmailer/test/url_test.rb, line 55
def encode(text, charset = "UTF-8")
  quoted_printable(text, charset)
end
new_mail(charset = "UTF-8") click to toggle source
# File actionmailer/test/url_test.rb, line 59
def new_mail(charset = "UTF-8")
  mail = Mail.new
  mail.mime_version = "1.0"
  if charset
    mail.content_type ["text", "plain", { "charset" => charset }]
  end
  mail
end
setup() click to toggle source
# File actionmailer/test/url_test.rb, line 76
def setup
  @recipient = "test@localhost"
end
test_signed_up_with_url() click to toggle source
# File actionmailer/test/url_test.rb, line 111
def test_signed_up_with_url
  UrlTestMailer.delivery_method = :test

  AppRoutes.draw do
    ActiveSupport::Deprecation.silence do
      get ":controller(/:action(/:id))"
      get "/welcome" => "foo#bar", as: "welcome"
    end
  end

  expected = new_mail
  expected.to      = @recipient
  expected.subject = "[Signed up] Welcome #{@recipient}"
  expected.body    = "Hello there,\n\nMr. #{@recipient}. Please see our greeting at http://example.com/welcome/greeting http://www.basecamphq.com/welcome\n\n<img src=\"/images/somelogo.png\" />"
  expected.from    = "system@loudthinking.com"
  expected.date    = Time.local(2004, 12, 12)
  expected.content_type = "text/html"

  created = nil
  assert_nothing_raised { created = UrlTestMailer.signed_up_with_url(@recipient) }
  assert_not_nil created

  expected.message_id = "<123@456>"
  created.message_id = "<123@456>"
  assert_dom_equal expected.encoded, created.encoded

  assert_nothing_raised { UrlTestMailer.signed_up_with_url(@recipient).deliver_now }
  assert_not_nil ActionMailer::Base.deliveries.first
  delivered = ActionMailer::Base.deliveries.first

  delivered.message_id = "<123@456>"
  assert_dom_equal expected.encoded, delivered.encoded
end
test_url_for() click to toggle source
# File actionmailer/test/url_test.rb, line 80
def test_url_for
  UrlTestMailer.delivery_method = :test

  AppRoutes.draw do
    ActiveSupport::Deprecation.silence do
      get ":controller(/:action(/:id))"
      get "/welcome" => "foo#bar", as: "welcome"
      get "/dummy_model" => "foo#baz", as: "dummy_model"
    end
  end

  # string
  assert_url_for "http://foo/", "http://foo/"

  # symbol
  assert_url_for "/welcome", :welcome

  # hash
  assert_url_for "/a/b/c", controller: "a", action: "b", id: "c"
  assert_url_for "/a/b/c", { controller: "a", action: "b", id: "c", only_path: true }, true

  # model
  assert_url_for "/dummy_model", DummyModel.new

  # class
  assert_url_for "/dummy_model", DummyModel

  # array
  assert_url_for "/dummy_model" , [DummyModel]
end