From 2a329065c2f9935028b742bd44603432a89bb921 Mon Sep 17 00:00:00 2001 From: Henning Wold Date: Wed, 13 Sep 2017 16:41:17 +0200 Subject: [PATCH] Adds test for #826 and patch that fixes it See issue #826 for more information --- lib/savon/qualified_message.rb | 2 +- spec/savon/qualified_message_spec.rb | 33 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/lib/savon/qualified_message.rb b/lib/savon/qualified_message.rb index c79635ad..b93b88c8 100644 --- a/lib/savon/qualified_message.rb +++ b/lib/savon/qualified_message.rb @@ -9,7 +9,7 @@ def initialize(types, used_namespaces, key_converter) end def to_hash(hash, path) - return unless hash + return hash unless hash return hash.map { |value| to_hash(value, path) } if hash.is_a?(Array) return hash.to_s unless hash.is_a?(Hash) diff --git a/spec/savon/qualified_message_spec.rb b/spec/savon/qualified_message_spec.rb index 6a4144f3..4706e6e5 100644 --- a/spec/savon/qualified_message_spec.rb +++ b/spec/savon/qualified_message_spec.rb @@ -62,6 +62,39 @@ module Savon expect(resulting_hash).to eq good_result expect(xml).to eq good_xml end + + it "properly handles boolean false" do + used_namespaces = { + %w(tns Foo) => 'ns' + } + + hash = { + :foo => { + :falsey => { + :@attr1 => false, + :content! => false + } + } + } + + good_result = { + "ns:Foo" => { + :falsey => { + :@attr1 => false, + :content! => false + } + } + } + + good_xml = %(false) + + message = described_class.new(types, used_namespaces, key_converter) + resulting_hash = message.to_hash(hash, ['tns']) + xml = Gyoku.xml(resulting_hash, key_converter: key_converter) + + expect(resulting_hash).to eq good_result + expect(xml).to eq good_xml + end end end