aboutsummaryrefslogblamecommitdiffstats
path: root/actionpack/test/dispatch/string_coercion_test.rb
blob: d79b17b932bc3c08f73be6593885f8e8f905c57b (plain) (tree)







































                                                                      
require 'abstract_unit'

class StringCoercionTest < ActiveSupport::TestCase
  test "body responds to each" do
    original_body = []
    body = ActionDispatch::StringCoercion::UglyBody.new(original_body)

    assert original_body.respond_to?(:each)
    assert body.respond_to?(:each)
  end

  test "body responds to to_path" do
    original_body = []
    def original_body.to_path; end
    body = ActionDispatch::StringCoercion::UglyBody.new(original_body)

    assert original_body.respond_to?(:to_path)
    assert body.respond_to?(:to_path)
  end

  test "body does not responds to to_path" do
    original_body = []
    body = ActionDispatch::StringCoercion::UglyBody.new(original_body)

    assert !original_body.respond_to?(:to_path)
    assert !body.respond_to?(:to_path)
  end

  test "calls to_s on body parts" do
    app = lambda { |env|
      [200, {'Content-Type' => 'html'}, [1, 2, 3]]
    }
    app = ActionDispatch::StringCoercion.new(app)
    parts = []
    status, headers, body = app.call({})
    body.each { |part| parts << part }

    assert_equal %w( 1 2 3 ), parts
  end
end