require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
describe Braintree::Xml::Parser do
describe "self.hash_from_xml" do
it "typecasts integers" do
xml = "123"
expect(xml).to parse_to(:root => {:foo => 123})
end
it "works with dashes or underscores" do
xml = <<-END
END
expect(xml).to parse_to(:root=>{:dash_es=>"", :under_scores=>""})
end
it "uses nil if nil=true, otherwise uses empty string" do
xml = <<-END
END
expect(xml).to parse_to(:root => {:a_nil_value => nil, :an_empty_string => ""})
end
it "typecasts datetimes" do
xml = <<-END
2009-10-28T10:19:49Z
END
expect(xml).to parse_to(:root => {:created_at => Time.utc(2009, 10, 28, 10, 19, 49)})
end
it "doesn't typecast dates" do
xml = <<-END
2009-10-28
END
expect(xml).to parse_to(:root => {:created_at => "2009-10-28"})
end
it "builds an array if type=array" do
xml = <<-END
Adam
Ben
END
expect(xml).to parse_to(:root => {:customers => [{:name => "Adam"}, {:name => "Ben"}]})
end
it "parses an array" do
xml = <<-END
Adam1
Ben2
END
expect(xml).to parse_to(:root => {:customers => [{:name => "Adam", :customer_id => "1"}, {:name => "Ben", :customer_id => "2"}]})
end
it "parses nested objects" do
xml = <<-END
1234
abc@test.com
1234567890
END
expect(xml).to parse_to(:root => {:paypal_details => {:deets => [{:secret_code => "1234"}], :payer_email => "abc@test.com", :payment_id => "1234567890"}})
end
end
end