aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-07-29 15:51:21 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2012-07-29 15:51:21 -0700
commit356787fce80ba545e288f464450483d52782871a (patch)
tree53736c756b5383806b78fadb834adb3a18892504 /actionpack/test
parent76d75f42409a5711a772d78f67cb635b9b1e933a (diff)
downloadrails-356787fce80ba545e288f464450483d52782871a.tar.gz
rails-356787fce80ba545e288f464450483d52782871a.tar.bz2
rails-356787fce80ba545e288f464450483d52782871a.zip
adding a buffered stream to the response object
Diffstat (limited to 'actionpack/test')
-rw-r--r--actionpack/test/controller/streaming_test.rb30
-rw-r--r--actionpack/test/dispatch/response_test.rb20
2 files changed, 50 insertions, 0 deletions
diff --git a/actionpack/test/controller/streaming_test.rb b/actionpack/test/controller/streaming_test.rb
new file mode 100644
index 0000000000..50c98f220a
--- /dev/null
+++ b/actionpack/test/controller/streaming_test.rb
@@ -0,0 +1,30 @@
+require 'abstract_unit'
+
+module ActionController
+ class StreamingResponseTest < ActionController::TestCase
+ class TestController < ActionController::Base
+ def self.controller_path
+ 'test'
+ end
+
+ def basic_stream
+ %w{ hello world }.each do |word|
+ response.stream.write word
+ response.stream.write "\n"
+ end
+ response.stream.close
+ end
+ end
+
+ tests TestController
+
+ def test_write_to_stream
+ get :basic_stream
+ assert_equal "hello\nworld\n", @response.body
+ end
+
+ def test_write_after_close
+ @response.stream
+ end
+ end
+end
diff --git a/actionpack/test/dispatch/response_test.rb b/actionpack/test/dispatch/response_test.rb
index 51948a623c..e2903d4b36 100644
--- a/actionpack/test/dispatch/response_test.rb
+++ b/actionpack/test/dispatch/response_test.rb
@@ -14,6 +14,26 @@ class ResponseTest < ActiveSupport::TestCase
assert t.join(0.5)
end
+ def test_stream_close
+ @response.stream.close
+ assert @response.stream.closed?
+ end
+
+ def test_stream_write
+ @response.stream.write "foo"
+ @response.stream.close
+ assert_equal "foo", @response.body
+ end
+
+ def test_write_after_close
+ @response.stream.close
+
+ e = assert_raises(IOError) do
+ @response.stream.write "omg"
+ end
+ assert_equal "closed stream", e.message
+ end
+
def test_response_body_encoding
body = ["hello".encode('utf-8')]
response = ActionDispatch::Response.new 200, {}, body