From 9a5599367eeeaa073f357859a53e232b6868f136 Mon Sep 17 00:00:00 2001 From: Yijie Date: Thu, 5 Nov 2015 11:45:58 +0800 Subject: [PATCH] WxPay::Result should return nil for nonexistent key --- lib/wx_pay/result.rb | 8 +++++--- lib/wx_pay/service.rb | 2 +- test/wx_pay/result_test.rb | 27 +++++++++++++++++++++++---- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/lib/wx_pay/result.rb b/lib/wx_pay/result.rb index 92622fe..ca34e27 100644 --- a/lib/wx_pay/result.rb +++ b/lib/wx_pay/result.rb @@ -2,14 +2,16 @@ module WxPay class Result < ::Hash SUCCESS_FLAG = 'SUCCESS'.freeze - def initialize(result) - super + def self.[] result + hash = super if result['xml'].class == Hash result['xml'].each_pair do |k, v| - self[k] = v + hash[k] = v end end + + hash end def success? diff --git a/lib/wx_pay/service.rb b/lib/wx_pay/service.rb index f6e14d5..5226f8a 100644 --- a/lib/wx_pay/service.rb +++ b/lib/wx_pay/service.rb @@ -171,7 +171,7 @@ module WxPay ) if r - WxPay::Result.new Hash.from_xml(r) + WxPay::Result[Hash.from_xml(r)] else nil end diff --git a/test/wx_pay/result_test.rb b/test/wx_pay/result_test.rb index 47e2b2c..7d4bc0e 100644 --- a/test/wx_pay/result_test.rb +++ b/test/wx_pay/result_test.rb @@ -2,7 +2,7 @@ require 'test_helper' class WxPay::ResultTest < MiniTest::Test def test_success_method_with_true - r = WxPay::Result.new( + r = WxPay::Result[ Hash.from_xml( <<-XML @@ -10,19 +10,38 @@ class WxPay::ResultTest < MiniTest::Test SUCCESS XML - )) + ) + ] assert_equal r.success?, true end + def test_success_method_with_true + r = WxPay::Result[ + Hash.from_xml( + <<-XML + + SUCCESS + wx_code_url + SUCCESS + + XML + ) + ] + + assert_equal r['return_code'].nil?, false + assert_equal r['prepay_id'].nil?, true + end + def test_success_method_with_false - r = WxPay::Result.new( + r = WxPay::Result[ Hash.from_xml( <<-XML XML - )) + ) + ] assert_equal r.success?, false end -- libgit2 0.21.0