1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/actionpack/test/controller/new_base/render_streaming_test.rb
2011-04-18 14:27:49 +02:00

71 lines
2.1 KiB
Ruby

require 'abstract_unit'
module RenderStreaming
class BasicController < ActionController::Base
self.view_paths = [ActionView::FixtureResolver.new(
"render_streaming/basic/hello_world.html.erb" => "Hello world",
"layouts/application.html.erb" => "<%= yield %>, I'm here!"
)]
layout "application"
stream :only => [:hello_world, :skip]
def hello_world
end
def skip
render :action => "hello_world", :stream => false
end
def explicit
render :action => "hello_world", :stream => true
end
def no_layout
render :action => "hello_world", :stream => true, :layout => false
end
def explicit_cache
headers["Cache-Control"] = "private"
render :action => "hello_world", :stream => true
end
end
class StreamingTest < Rack::TestCase
test "rendering with streaming enabled at the class level" do
get "/render_streaming/basic/hello_world"
assert_body "b\r\nHello world\r\nb\r\n, I'm here!\r\n0\r\n\r\n"
assert_streaming!
end
test "rendering with streaming given to render" do
get "/render_streaming/basic/explicit"
assert_body "b\r\nHello world\r\nb\r\n, I'm here!\r\n0\r\n\r\n"
assert_streaming!
end
test "rendering with streaming do not override explicit cache control given to render" do
get "/render_streaming/basic/explicit_cache"
assert_body "b\r\nHello world\r\nb\r\n, I'm here!\r\n0\r\n\r\n"
assert_streaming! "private"
end
test "rendering with streaming no layout" do
get "/render_streaming/basic/no_layout"
assert_body "b\r\nHello world\r\n0\r\n\r\n"
assert_streaming!
end
test "skip rendering with streaming at render level" do
get "/render_streaming/basic/skip"
assert_body "Hello world, I'm here!"
end
def assert_streaming!(cache="no-cache")
assert_status 200
assert_equal nil, headers["Content-Length"]
assert_equal "chunked", headers["Transfer-Encoding"]
assert_equal cache, headers["Cache-Control"]
end
end
end if defined?(Fiber)