docdata 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4522413a11b26b3dfdfd86eba1c75266e2e75fd
4
- data.tar.gz: 59ec267e42dc78db14c0ae8e24ff262198f14dc7
3
+ metadata.gz: 4760635525904b78d47e8390f2c371e45f316a18
4
+ data.tar.gz: a91306598ed4b29b5adf81eb172da822ac4e3b3e
5
5
  SHA512:
6
- metadata.gz: 6e7708006984099623dd4eb12229b6913285525705e3ac6e0b398e3a7626902896e5431f1f95afb745e97201da551c10bac842b0545b6027e1331671bd46a1a8
7
- data.tar.gz: 3440473688ded10b3412bc588d3dc949beba30b2a0704123a0017af786b5582951124f4d64534494e608719927ba5674e1d5d4bba2669f978605559e14200e9a
6
+ metadata.gz: 2ad18cf614968cb60eccb8abc1c9577462ee8b9e67bfe701d9887f092d9a42cb55da399d80ac6932578431b81b62d53ffe8fbebde142719b78349f2fb79129b6
7
+ data.tar.gz: 9f31c54925a1b75fd2bda0ddc6341438256a6de96817153204a7be24121470b7665a9793401a08ca1df93c4eed5fb39875eb0a351b6fe63933a95eb2c971a876
@@ -1,3 +1,6 @@
1
+ ## v0.1.7
2
+ * Bug fixed where the gem didn't handle docdata XML response with multiple 'payment' nodes well. The gem assumed that the nodes where in chronological order, but they aren't.
3
+
1
4
  ## v0.1.6
2
5
  * Bug fixed where a description contained an illegal character (& in this case)
3
6
 
@@ -212,12 +212,14 @@ module Docdata
212
212
  private
213
213
 
214
214
  # Sometimes a single response has multiple payment nodes. When a payment fails first and
215
- # succeeds later, for example. In that case, always use the last (== newest) node.
215
+ # succeeds later, for example. In that case, always use the newest (== highest id) node.
216
216
  def self.payment_node(hash)
217
217
  if hash[:payment] && hash[:payment].is_a?(Hash)
218
218
  hash[:payment]
219
219
  elsif hash[:payment] && hash[:payment].is_a?(Array)
220
- hash[:payment].last
220
+ # use the node with the highest ID, for it is the newest
221
+ list = hash[:payment].sort_by { |k| k[:id] }
222
+ return list.last
221
223
  else
222
224
  false
223
225
  end
@@ -1,3 +1,3 @@
1
1
  module Docdata
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -17,7 +17,7 @@ describe Docdata::Response do
17
17
  end
18
18
  end
19
19
 
20
- describe "response with multiple payment nodes" do
20
+ describe "response with multiple payment nodes (canceled first, paid later)" do
21
21
  before(:each) do
22
22
  file = "#{File.dirname(__FILE__)}/xml/status-paid-ideal-multiple.xml"
23
23
  @xml = open(file)
@@ -33,6 +33,23 @@ describe Docdata::Response do
33
33
  end
34
34
  end
35
35
 
36
+ describe "response with multiple payment nodes (paid first, canceled later)" do
37
+ before(:each) do
38
+ file = "#{File.dirname(__FILE__)}/xml/status-paid-canceled-ideal-multiple.xml"
39
+ @xml = open(file)
40
+ @response = Docdata::Response.parse(:status, @xml)
41
+ end
42
+
43
+ it "returs a response object" do
44
+ expect(@response).to be_kind_of(Docdata::Response)
45
+ end
46
+
47
+ it "is paid" do
48
+ expect(@response.paid).to eq(true)
49
+ end
50
+ end
51
+
52
+
36
53
  describe "different payment methods" do
37
54
  context ":status, paid iDeal" do
38
55
  before(:each) do
@@ -0,0 +1,42 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <S:Body>
4
+ <statusResponse xmlns="http://www.docdatapayments.com/services/paymentservice/1_1/"><statusSuccess>
5
+ <success code="SUCCESS">Operation successful.</success>
6
+ <report>
7
+ <approximateTotals exchangedTo="EUR" exchangeRateDate="2014-09-24 09:29:54">
8
+ <totalRegistered>2000</totalRegistered>
9
+ <totalShopperPending>0</totalShopperPending>
10
+ <totalAcquirerPending>0</totalAcquirerPending>
11
+ <totalAcquirerApproved>2000</totalAcquirerApproved>
12
+ <totalCaptured>2000</totalCaptured>
13
+ <totalRefunded>0</totalRefunded>
14
+ <totalChargedback>0</totalChargedback>
15
+ </approximateTotals>
16
+ <payment>
17
+ <id>2502836079</id>
18
+ <paymentMethod>IDEAL</paymentMethod>
19
+ <authorization>
20
+ <status>AUTHORIZED</status>
21
+ <amount currency="EUR">2000</amount>
22
+ <confidenceLevel>ACQUIRER_APPROVED</confidenceLevel>
23
+ <capture>
24
+ <status>CAPTURED</status>
25
+ <amount currency="EUR">2000</amount>
26
+ </capture>
27
+ </authorization>
28
+ </payment>
29
+ <payment>
30
+ <id>2502835583</id>
31
+ <paymentMethod>IDEAL</paymentMethod>
32
+ <authorization>
33
+ <status>CANCELED</status>
34
+ <amount currency="EUR">2000</amount>
35
+ <confidenceLevel></confidenceLevel>
36
+ </authorization>
37
+ </payment>
38
+ </report>
39
+ </statusSuccess>
40
+ </statusResponse>
41
+ </S:Body>
42
+ </S:Envelope>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docdata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henk Meijer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-01 00:00:00.000000000 Z
12
+ date: 2014-09-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -283,6 +283,7 @@ files:
283
283
  - spec/xml/status-canceled-creditcard.xml
284
284
  - spec/xml/status-canceled-ideal.xml
285
285
  - spec/xml/status-new.xml
286
+ - spec/xml/status-paid-canceled-ideal-multiple.xml
286
287
  - spec/xml/status-paid-creditcard.xml
287
288
  - spec/xml/status-paid-ideal-multiple.xml
288
289
  - spec/xml/status-paid-ideal.xml
@@ -324,6 +325,7 @@ test_files:
324
325
  - spec/xml/status-canceled-creditcard.xml
325
326
  - spec/xml/status-canceled-ideal.xml
326
327
  - spec/xml/status-new.xml
328
+ - spec/xml/status-paid-canceled-ideal-multiple.xml
327
329
  - spec/xml/status-paid-creditcard.xml
328
330
  - spec/xml/status-paid-ideal-multiple.xml
329
331
  - spec/xml/status-paid-ideal.xml