simpler FakeSafeBuffer implementation for testing

references #93
This commit is contained in:
Mislav Marohnić 2013-06-25 03:58:14 +02:00
parent c328e5285a
commit cad28c0ef3
2 changed files with 11 additions and 21 deletions

View File

@ -81,24 +81,3 @@ module Faraday
end
end
end
# The essential part of ActiveSupport::SafeBuffer to demonstrate
# how it blows up when passed to Faraday::Utils.escape
# rails/rails@ed738f7
class FakeSafeBuffer < String
UNSAFE_STRING_METHODS = %w(gsub)
def to_s
self
end
UNSAFE_STRING_METHODS.each do |unsafe_method|
if 'String'.respond_to?(unsafe_method)
class_eval <<-EOT, __FILE__, __LINE__ + 1
def #{unsafe_method}(*args, &block) # def capitalize(*args, &block)
to_str.#{unsafe_method}(*args, &block) # to_str.capitalize(*args, &block)
end # end
EOT
end
end
end

View File

@ -9,6 +9,17 @@ class TestUtils < Faraday::TestCase
Faraday::Utils.default_uri_parser = nil
end
# emulates ActiveSupport::SafeBuffer#gsub
FakeSafeBuffer = Struct.new(:string) do
def to_s() self end
def gsub(regex)
string.gsub(regex) {
match, = $&, '' =~ /a/
yield match
}
end
end
def test_escaping_safe_buffer
str = FakeSafeBuffer.new('$32,000.00')
assert_equal '%2432%2C000.00', Faraday::Utils.escape(str)