diff --git a/lib/httpx/transcoder/json.rb b/lib/httpx/transcoder/json.rb index 1b6bb8e2..2ab82b93 100644 --- a/lib/httpx/transcoder/json.rb +++ b/lib/httpx/transcoder/json.rb @@ -42,17 +42,17 @@ module HTTPX::Transcoder # rubocop:disable Style/SingleLineMethods if defined?(MultiJson) def json_load(*args); MultiJson.load(*args); end - def json_dump(*args); MultiJson.dump(*args); end + def json_dump(obj); MultiJson.dump(obj); end elsif defined?(Oj) def json_load(response, *args); Oj.load(response.to_s, *args); end - def json_dump(*args); Oj.dump(*args); end + def json_dump(obj); Oj.dump(obj, mode: :compat); end elsif defined?(Yajl) def json_load(response, *args); Yajl::Parser.new(*args).parse(response.to_s); end - def json_dump(*args); Yajl::Encoder.encode(*args); end + def json_dump(obj); Yajl::Encoder.encode(obj); end else require "json" def json_load(*args); ::JSON.parse(*args); end - def json_dump(*args); ::JSON.dump(*args); end + def json_dump(obj); ::JSON.dump(obj); end end # rubocop:enable Style/SingleLineMethods end diff --git a/sig/transcoder/json.rbs b/sig/transcoder/json.rbs index a705960d..34dfd31c 100644 --- a/sig/transcoder/json.rbs +++ b/sig/transcoder/json.rbs @@ -6,7 +6,7 @@ module HTTPX::Transcoder def self?.decode: (HTTPX::Response response) -> _Decoder def self?.json_load: (string source, ?json_options) -> untyped - def self?.json_dump: (_ToJson obj, *untyped) -> String + def self?.json_dump: (_ToJson obj) -> String class Encoder extend Forwardable diff --git a/standalone_tests/response_json_multi_json_test.rb b/standalone_tests/json_multi_json_test.rb similarity index 70% rename from standalone_tests/response_json_multi_json_test.rb rename to standalone_tests/json_multi_json_test.rb index 3d1e8b3a..aed74ceb 100644 --- a/standalone_tests/response_json_multi_json_test.rb +++ b/standalone_tests/json_multi_json_test.rb @@ -15,10 +15,15 @@ class ResponseYajlTest < Minitest::Test assert_raises(MultiJson::ParseError) { json_response.json } end + def test_request_encoders + json_request = request json: { :a => "b" } + assert json_request.body.to_s == %({"a":"b"}) + end + private - def request(verb = "GET", uri = "http://google.com") - Request.new(verb, uri, Options.new) + def request(verb = "GET", uri = "http://google.com", **args) + Request.new(verb, uri, Options.new, **args) end def response(*args) diff --git a/standalone_tests/response_json_oj_test.rb b/standalone_tests/json_oj_test.rb similarity index 69% rename from standalone_tests/response_json_oj_test.rb rename to standalone_tests/json_oj_test.rb index a2e7bea8..b3c70cb8 100644 --- a/standalone_tests/response_json_oj_test.rb +++ b/standalone_tests/json_oj_test.rb @@ -15,10 +15,15 @@ class ResponseOjTest < Minitest::Test assert_raises(Oj::ParseError) { json_response.json } end + def test_request_encoders + json_request = request json: { :a => "b" } + assert json_request.body.to_s == %({"a":"b"}) + end + private - def request(verb = "GET", uri = "http://google.com") - Request.new(verb, uri, Options.new) + def request(verb = "GET", uri = "http://google.com", **args) + Request.new(verb, uri, Options.new, **args) end def response(*args) diff --git a/standalone_tests/response_json_yajl_test.rb b/standalone_tests/json_yajl_test.rb similarity index 70% rename from standalone_tests/response_json_yajl_test.rb rename to standalone_tests/json_yajl_test.rb index 99011074..efc45eda 100644 --- a/standalone_tests/response_json_yajl_test.rb +++ b/standalone_tests/json_yajl_test.rb @@ -15,10 +15,15 @@ class ResponseYajlTest < Minitest::Test assert_raises(Yajl::ParseError) { json_response.json } end + def test_request_encoders + json_request = request json: { :a => "b" } + assert json_request.body.to_s == %({"a":"b"}) + end + private - def request(verb = "GET", uri = "http://google.com") - Request.new(verb, uri, Options.new) + def request(verb = "GET", uri = "http://google.com", **args) + Request.new(verb, uri, Options.new, **args) end def response(*args)