diff options
author | José Valim <jose.valim@gmail.com> | 2011-09-08 01:26:55 -0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-09-08 01:26:55 -0700 |
commit | b4a6e2f8442ceda118367f9a61c38af754be1cbf (patch) | |
tree | 81a0710cb8f3ddd4a2b77d894b021f777f429a8e /activesupport/test/safe_buffer_test.rb | |
parent | e1b500ec96987de595da1541a73a7d5fb9eece9c (diff) | |
parent | 3718ccd2a61c2c189913bcfd487912f592fa0660 (diff) | |
download | rails-b4a6e2f8442ceda118367f9a61c38af754be1cbf.tar.gz rails-b4a6e2f8442ceda118367f9a61c38af754be1cbf.tar.bz2 rails-b4a6e2f8442ceda118367f9a61c38af754be1cbf.zip |
Merge pull request #2248 from dmathieu/safe_gsub
make gsub and sub unavailable in SafeBuffers - Closes #1555
Diffstat (limited to 'activesupport/test/safe_buffer_test.rb')
-rw-r--r-- | activesupport/test/safe_buffer_test.rb | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/activesupport/test/safe_buffer_test.rb b/activesupport/test/safe_buffer_test.rb index 8f77999d25..f8fcd44ef8 100644 --- a/activesupport/test/safe_buffer_test.rb +++ b/activesupport/test/safe_buffer_test.rb @@ -67,42 +67,41 @@ class SafeBufferTest < ActiveSupport::TestCase assert_equal "my_test", str end - test "Should not return safe buffer from gsub" do - altered_buffer = @buffer.gsub('', 'asdf') - assert_equal 'asdf', altered_buffer + test "Should not return safe buffer from capitalize" do + altered_buffer = "asdf".html_safe.capitalize + assert_equal 'Asdf', altered_buffer assert !altered_buffer.html_safe? end test "Should not return safe buffer from gsub!" do - @buffer.gsub!('', 'asdf') - assert_equal 'asdf', @buffer - assert !@buffer.html_safe? + string = "asdf" + string.capitalize! + assert_equal 'Asdf', string + assert !string.html_safe? end test "Should escape dirty buffers on add" do clean = "hello".html_safe - @buffer.gsub!('', '<>') - assert_equal "hello<>", clean + @buffer + assert_equal "hello<>", clean + '<>' end test "Should concat as a normal string when dirty" do clean = "hello".html_safe - @buffer.gsub!('', '<>') - assert_equal "<>hello", @buffer + clean + assert_equal "<>hello", '<>' + clean end test "Should preserve dirty? status on copy" do - @buffer.gsub!('', '<>') - assert !@buffer.dup.html_safe? + dirty = "<>" + assert !dirty.dup.html_safe? end test "Should raise an error when safe_concat is called on dirty buffers" do - @buffer.gsub!('', '<>') + @buffer.capitalize! assert_raise ActiveSupport::SafeBuffer::SafeConcatError do @buffer.safe_concat "BUSTED" end end - + test "should not fail if the returned object is not a string" do assert_kind_of NilClass, @buffer.slice("chipchop") end @@ -112,4 +111,18 @@ class SafeBufferTest < ActiveSupport::TestCase assert_not_nil dirty assert !dirty end + + ["gsub", "sub"].each do |unavailable_method| + test "should raise on #{unavailable_method}" do + assert_raise NoMethodError, "#{unavailable_method} cannot be used with a Safe Buffer object. You should use object.to_str.#{unavailable_method}" do + @buffer.send(unavailable_method, '', '<>') + end + end + + test "should raise on #{unavailable_method}!" do + assert_raise NoMethodError, "#{unavailable_method}! cannot be used with a Safe Buffer object. You should use object.to_str.#{unavailable_method}!" do + @buffer.send("#{unavailable_method}!", '', '<>') + end + end + end end |