mollie-api-ruby 3.1.5 → 4.0.0.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +0 -3
  3. data/CHANGELOG.md +6 -0
  4. data/README.md +63 -119
  5. data/bin/console +15 -0
  6. data/bin/setup +8 -0
  7. data/docs/migration_v2_2_x.md +67 -0
  8. data/docs/migration_v3_x.md +227 -0
  9. data/examples/chargebacks/get.rb +4 -0
  10. data/examples/chargebacks/list.rb +1 -0
  11. data/{website-docs → examples}/connect/authorize.rb +3 -2
  12. data/{website-docs → examples}/connect/tokens.rb +1 -1
  13. data/examples/customers/create-payment.rb +6 -0
  14. data/examples/customers/create.rb +5 -0
  15. data/examples/customers/delete.rb +1 -0
  16. data/examples/customers/get.rb +1 -0
  17. data/examples/customers/list-payments.rb +1 -0
  18. data/examples/customers/list.rb +1 -0
  19. data/examples/customers/update.rb +4 -0
  20. data/examples/invoices/get.rb +1 -0
  21. data/examples/invoices/list.rb +1 -0
  22. data/examples/mandates/create.rb +9 -0
  23. data/examples/mandates/delete.rb +1 -0
  24. data/examples/mandates/get.rb +1 -0
  25. data/examples/mandates/list.rb +1 -0
  26. data/examples/methods/get.rb +4 -0
  27. data/examples/methods/list.rb +4 -0
  28. data/examples/organisations/get-current.rb +1 -0
  29. data/examples/organisations/get.rb +1 -0
  30. data/examples/payments/create.rb +9 -0
  31. data/examples/payments/delete.rb +1 -0
  32. data/examples/payments/get-customer.rb +2 -0
  33. data/examples/payments/get-mandate.rb +2 -0
  34. data/examples/payments/get-settlement.rb +2 -0
  35. data/examples/payments/get-subscription.rb +2 -0
  36. data/examples/payments/get.rb +1 -0
  37. data/examples/payments/list.rb +1 -0
  38. data/examples/payments/webhook.rb +12 -0
  39. data/examples/permissions/get.rb +1 -0
  40. data/examples/permissions/list.rb +1 -0
  41. data/examples/profiles/create.rb +8 -0
  42. data/examples/profiles/delete.rb +1 -0
  43. data/examples/profiles/get.rb +1 -0
  44. data/examples/profiles/list-chargebacks.rb +2 -0
  45. data/examples/profiles/list-methods.rb +2 -0
  46. data/examples/profiles/list-payments.rb +2 -0
  47. data/examples/profiles/list-refunds.rb +2 -0
  48. data/examples/profiles/list.rb +1 -0
  49. data/examples/profiles/update.rb +5 -0
  50. data/examples/refunds/create.rb +5 -0
  51. data/examples/refunds/delete.rb +4 -0
  52. data/examples/refunds/get-payment.rb +2 -0
  53. data/examples/refunds/get.rb +4 -0
  54. data/examples/refunds/list.rb +1 -0
  55. data/examples/settlements/get.rb +1 -0
  56. data/examples/settlements/list-chargebacks.rb +1 -0
  57. data/examples/settlements/list-payments.rb +1 -0
  58. data/examples/settlements/list-refunds.rb +1 -0
  59. data/examples/settlements/list.rb +1 -0
  60. data/examples/settlements/next.rb +1 -0
  61. data/examples/settlements/open.rb +1 -0
  62. data/examples/subscriptions/create.rb +8 -0
  63. data/examples/subscriptions/delete.rb +4 -0
  64. data/examples/subscriptions/get.rb +4 -0
  65. data/examples/subscriptions/list.rb +1 -0
  66. data/examples/subscriptions/update.rb +5 -0
  67. data/lib/cacert.pem +168 -48
  68. data/lib/mollie.rb +1 -3
  69. data/lib/mollie/amount.rb +20 -0
  70. data/lib/mollie/base.rb +9 -8
  71. data/lib/mollie/chargeback.rb +25 -15
  72. data/lib/mollie/client.rb +33 -13
  73. data/lib/mollie/customer.rb +9 -14
  74. data/lib/mollie/customer/mandate.rb +17 -5
  75. data/lib/mollie/customer/subscription.rb +14 -15
  76. data/lib/mollie/exception.rb +15 -3
  77. data/lib/mollie/invoice.rb +30 -26
  78. data/lib/mollie/list.rb +27 -18
  79. data/lib/mollie/method.rb +17 -25
  80. data/lib/mollie/organization.rb +5 -11
  81. data/lib/mollie/payment.rb +89 -61
  82. data/lib/mollie/permission.rb +0 -1
  83. data/lib/mollie/profile.rb +18 -13
  84. data/lib/mollie/refund.rb +27 -7
  85. data/lib/mollie/settlement.rb +50 -9
  86. data/lib/mollie/util.rb +11 -0
  87. data/lib/mollie/version.rb +1 -1
  88. data/mollie-api-ruby.gemspec +0 -7
  89. data/test/mollie/amount_test.rb +30 -0
  90. data/test/mollie/base_test.rb +44 -44
  91. data/test/mollie/chargeback_test.rb +78 -17
  92. data/test/mollie/client_test.rb +29 -12
  93. data/test/mollie/customer/mandate_test.rb +85 -9
  94. data/test/mollie/customer/payment_test.rb +2 -2
  95. data/test/mollie/customer/subscription_test.rb +71 -20
  96. data/test/mollie/customer_test.rb +17 -89
  97. data/test/mollie/invoice_test.rb +40 -24
  98. data/test/mollie/list_test.rb +62 -18
  99. data/test/mollie/method_test.rb +2 -8
  100. data/test/mollie/organization_test.rb +28 -23
  101. data/test/mollie/payment/chargeback_test.rb +2 -3
  102. data/test/mollie/payment/refund_test.rb +2 -3
  103. data/test/mollie/payment_test.rb +272 -86
  104. data/test/mollie/permission_test.rb +0 -2
  105. data/test/mollie/profile_test.rb +129 -35
  106. data/test/mollie/refund_test.rb +90 -10
  107. data/test/mollie/settlement/chargeback_test.rb +2 -4
  108. data/test/mollie/settlement/payment_test.rb +2 -2
  109. data/test/mollie/settlement/refund_test.rb +2 -3
  110. data/test/mollie/settlement_test.rb +199 -98
  111. data/test/mollie/util_test.rb +31 -0
  112. metadata +96 -239
  113. data/examples/apis/api_docs.rb +0 -37
  114. data/examples/apis/chargebacks.rb +0 -17
  115. data/examples/apis/connect.rb +0 -58
  116. data/examples/apis/customers.rb +0 -116
  117. data/examples/apis/invoices.rb +0 -38
  118. data/examples/apis/issuers.rb +0 -35
  119. data/examples/apis/mandates.rb +0 -83
  120. data/examples/apis/methods.rb +0 -50
  121. data/examples/apis/organizations.rb +0 -16
  122. data/examples/apis/payments.rb +0 -174
  123. data/examples/apis/permissions.rb +0 -32
  124. data/examples/apis/profiles.rb +0 -126
  125. data/examples/apis/refunds.rb +0 -17
  126. data/examples/apis/settlements.rb +0 -84
  127. data/examples/apis/subscriptions.rb +0 -165
  128. data/examples/config.ru +0 -57
  129. data/examples/public/images/collapse.gif +0 -0
  130. data/examples/public/images/expand.gif +0 -0
  131. data/examples/public/images/explorer_icons.png +0 -0
  132. data/examples/public/images/favicon-16x16.png +0 -0
  133. data/examples/public/images/favicon-32x32.png +0 -0
  134. data/examples/public/images/favicon.ico +0 -0
  135. data/examples/public/images/logo_small.png +0 -0
  136. data/examples/public/images/pet_store_api.png +0 -0
  137. data/examples/public/images/throbber.gif +0 -0
  138. data/examples/public/images/wordnik_api.png +0 -0
  139. data/examples/public/index.html +0 -101
  140. data/examples/public/javascripts/lib/backbone-min.js +0 -1
  141. data/examples/public/javascripts/lib/es5-shim.js +0 -1
  142. data/examples/public/javascripts/lib/handlebars-4.0.5.js +0 -3
  143. data/examples/public/javascripts/lib/highlight.9.1.0.pack.js +0 -1
  144. data/examples/public/javascripts/lib/highlight.9.1.0.pack_extended.js +0 -1
  145. data/examples/public/javascripts/lib/jquery-1.8.0.min.js +0 -3
  146. data/examples/public/javascripts/lib/jquery.ba-bbq.min.js +0 -1
  147. data/examples/public/javascripts/lib/jquery.slideto.min.js +0 -1
  148. data/examples/public/javascripts/lib/jquery.wiggle.min.js +0 -1
  149. data/examples/public/javascripts/lib/js-yaml.min.js +0 -2
  150. data/examples/public/javascripts/lib/jsoneditor.min.js +0 -5
  151. data/examples/public/javascripts/lib/lodash.min.js +0 -2
  152. data/examples/public/javascripts/lib/marked.js +0 -1
  153. data/examples/public/javascripts/lib/object-assign-pollyfill.js +0 -1
  154. data/examples/public/javascripts/lib/sanitize-html.min.js +0 -4
  155. data/examples/public/javascripts/lib/swagger-oauth.js +0 -1
  156. data/examples/public/javascripts/swagger-ui.js +0 -25378
  157. data/examples/public/javascripts/swagger-ui.min.js +0 -15
  158. data/examples/public/javascripts/swagger_docs.js +0 -14
  159. data/examples/public/o2c.html +0 -20
  160. data/examples/public/stylesheets/reset.css +0 -1
  161. data/examples/public/stylesheets/screen.css +0 -1545
  162. data/examples/public/stylesheets/swagger_docs.css +0 -4
  163. data/examples/public/stylesheets/typography.css +0 -0
  164. data/lib/mollie/issuer.rb +0 -5
  165. data/lib/mollie/profile/api_key.rb +0 -19
  166. data/lib/mollie/relation.rb +0 -36
  167. data/test/mollie/issuer_test.rb +0 -19
  168. data/test/mollie/profile/apikey_test.rb +0 -31
  169. data/website-docs/chargebacks/list-all.rb +0 -12
  170. data/website-docs/customers/create-payment.rb +0 -13
  171. data/website-docs/customers/create.rb +0 -12
  172. data/website-docs/customers/delete.rb +0 -10
  173. data/website-docs/customers/get.rb +0 -10
  174. data/website-docs/customers/list-payments.rb +0 -10
  175. data/website-docs/customers/list.rb +0 -12
  176. data/website-docs/customers/update.rb +0 -11
  177. data/website-docs/invoices/get.rb +0 -10
  178. data/website-docs/invoices/list.rb +0 -12
  179. data/website-docs/issuers/get.rb +0 -10
  180. data/website-docs/issuers/list.rb +0 -12
  181. data/website-docs/mandates/create.rb +0 -16
  182. data/website-docs/mandates/delete.rb +0 -10
  183. data/website-docs/mandates/get.rb +0 -10
  184. data/website-docs/mandates/list.rb +0 -12
  185. data/website-docs/methods/get.rb +0 -10
  186. data/website-docs/methods/list.rb +0 -12
  187. data/website-docs/organisations/get.rb +0 -10
  188. data/website-docs/payments/create-refund.rb +0 -14
  189. data/website-docs/payments/create.rb +0 -16
  190. data/website-docs/payments/delete-refund.rb +0 -13
  191. data/website-docs/payments/delete.rb +0 -12
  192. data/website-docs/payments/get-chargeback.rb +0 -11
  193. data/website-docs/payments/get-refund.rb +0 -11
  194. data/website-docs/payments/get.rb +0 -10
  195. data/website-docs/payments/list-chargeback.rb +0 -13
  196. data/website-docs/payments/list-refunds.rb +0 -13
  197. data/website-docs/payments/list.rb +0 -12
  198. data/website-docs/payments/payment-webhook.rb +0 -21
  199. data/website-docs/permissions/get.rb +0 -10
  200. data/website-docs/permissions/list.rb +0 -12
  201. data/website-docs/profiles/create.rb +0 -15
  202. data/website-docs/profiles/delete.rb +0 -10
  203. data/website-docs/profiles/get-key.rb +0 -11
  204. data/website-docs/profiles/get.rb +0 -10
  205. data/website-docs/profiles/list-keys.rb +0 -13
  206. data/website-docs/profiles/list.rb +0 -12
  207. data/website-docs/profiles/reset-key.rb +0 -13
  208. data/website-docs/profiles/update.rb +0 -12
  209. data/website-docs/refunds/list.rb +0 -12
  210. data/website-docs/settlements/get.rb +0 -10
  211. data/website-docs/settlements/list-chargebacks.rb +0 -13
  212. data/website-docs/settlements/list-payments.rb +0 -13
  213. data/website-docs/settlements/list-refunds.rb +0 -13
  214. data/website-docs/settlements/list.rb +0 -12
  215. data/website-docs/settlements/next.rb +0 -9
  216. data/website-docs/settlements/open.rb +0 -9
  217. data/website-docs/subscriptions/create.rb +0 -14
  218. data/website-docs/subscriptions/delete.rb +0 -10
  219. data/website-docs/subscriptions/get.rb +0 -10
  220. data/website-docs/subscriptions/list.rb +0 -12
@@ -1,13 +1,21 @@
1
1
  module Mollie
2
2
  class Settlement < Base
3
+ STATUS_OPEN = "open"
4
+ STATUS_PENDING = "pending"
5
+ STATUS_PAIDOUT = "paidout"
6
+ STATUS_FAILED = "failed"
7
+
3
8
  attr_accessor :id,
4
9
  :reference,
5
- :settled_datetime,
10
+ :created_at,
11
+ :settled_at,
12
+ :status,
6
13
  :amount,
7
14
  :periods,
8
- :payment_ids,
9
- :refund_ids,
10
- :links
15
+ :invoice_id,
16
+ :_links
17
+
18
+ alias_method :links, :_links
11
19
 
12
20
  def self.open(options = {})
13
21
  get("open", options)
@@ -17,20 +25,53 @@ module Mollie
17
25
  get("next", options)
18
26
  end
19
27
 
20
- def settled_datetime=(settled_datetime)
21
- @settled_datetime = Time.parse(settled_datetime.to_s) rescue nil
28
+ def open?
29
+ status == STATUS_OPEN
30
+ end
31
+
32
+ def pending?
33
+ status == STATUS_PENDING
34
+ end
35
+
36
+ def paidout?
37
+ status == STATUS_PAIDOUT
38
+ end
39
+
40
+ def failed?
41
+ status == STATUS_FAILED
42
+ end
43
+
44
+ def created_at=(created_at)
45
+ @created_at = Time.parse(created_at.to_s) rescue nil
46
+ end
47
+
48
+ def settled_at=(settled_at)
49
+ @settled_at = Time.parse(settled_at.to_s) rescue nil
22
50
  end
23
51
 
24
52
  def amount=(amount)
25
- @amount = BigDecimal.new(amount.to_s) if amount
53
+ @amount = Mollie::Amount.new(amount)
26
54
  end
27
55
 
28
56
  def periods=(periods)
29
57
  @periods = Util.nested_openstruct(periods) if periods.is_a?(Hash)
30
58
  end
31
59
 
32
- def payments
33
- links && links['payments']
60
+ def payments(options = {})
61
+ Settlement::Payment.all(options.merge(settlement_id: id))
62
+ end
63
+
64
+ def refunds(options = {})
65
+ Settlement::Refund.all(options.merge(settlement_id: id))
66
+ end
67
+
68
+ def chargebacks(options = {})
69
+ Settlement::Chargeback.all(options.merge(settlement_id: id))
70
+ end
71
+
72
+ def invoice(options = {})
73
+ return if invoice_id.nil?
74
+ Invoice.get(invoice_id, options)
34
75
  end
35
76
  end
36
77
  end
data/lib/mollie/util.rb CHANGED
@@ -53,5 +53,16 @@ module Mollie
53
53
  obj
54
54
  end
55
55
  end
56
+
57
+ def extract_url(links, type)
58
+ links && links[type] && links[type]['href']
59
+ end
60
+
61
+ def extract_id(links, type)
62
+ href = extract_url(links, type)
63
+ return if href.nil?
64
+ uri = URI.parse(href)
65
+ File.basename(uri.path)
66
+ end
56
67
  end
57
68
  end
@@ -1,3 +1,3 @@
1
1
  module Mollie
2
- VERSION = "3.1.5"
2
+ VERSION = "4.0.0-alpha.1"
3
3
  end
@@ -23,11 +23,4 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency("rake")
24
24
  s.add_development_dependency("test-unit")
25
25
  s.add_development_dependency("webmock")
26
- s.add_development_dependency("thin")
27
- s.add_development_dependency("sinatra")
28
- s.add_development_dependency("sinatra-contrib")
29
- s.add_development_dependency("sinatra-cross_origin")
30
- s.add_development_dependency("rack-oauth2")
31
- s.add_development_dependency("swagger-blocks")
32
- s.add_development_dependency("ngrok-tunnel")
33
26
  end
@@ -0,0 +1,30 @@
1
+ require 'helper'
2
+
3
+ module Mollie
4
+ class AmountTest < Test::Unit::TestCase
5
+ def test_value
6
+ amount = Amount.new('value' => '42.10', 'currency' => 'EUR')
7
+ assert_equal 0.421e2, amount.value
8
+ end
9
+
10
+ def test_currency
11
+ amount = Amount.new('currency' => 'EUR')
12
+ assert_equal 'EUR', amount.currency
13
+ end
14
+
15
+ def test_to_hash
16
+ amount = Amount.new('value' => '42.10', 'currency' => 'EUR')
17
+
18
+ assert_equal(
19
+ { value: '42.10', currency: 'EUR' },
20
+ amount.to_h
21
+ )
22
+ end
23
+
24
+ def test_nil
25
+ amount = Mollie::Amount.new(nil)
26
+ assert_nil amount.value
27
+ assert_nil amount.currency
28
+ end
29
+ end
30
+ end
@@ -2,10 +2,10 @@ require 'helper'
2
2
 
3
3
  module Mollie
4
4
  class TestObject < Base
5
- attr_accessor :id, :amount, :my_field
5
+ attr_accessor :id, :foo, :my_field
6
6
 
7
7
  class NestedObject < Base
8
- attr_accessor :id, :testobject_id, :amount
8
+ attr_accessor :id, :testobject_id, :foo
9
9
  end
10
10
  end
11
11
 
@@ -27,7 +27,7 @@ module Mollie
27
27
  end
28
28
 
29
29
  def test_get
30
- stub_request(:get, "https://api.mollie.nl/v1/testobjects/my-id")
30
+ stub_request(:get, "https://api.mollie.com/v2/testobjects/my-id")
31
31
  .to_return(:status => 200, :body => %{{"id":"my-id"}}, :headers => {})
32
32
 
33
33
  resource = TestObject.get("my-id")
@@ -36,7 +36,7 @@ module Mollie
36
36
  end
37
37
 
38
38
  def test_nested_get
39
- stub_request(:get, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
39
+ stub_request(:get, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects/my-id")
40
40
  .to_return(:status => 200, :body => %{{"id":"my-id", "testobject_id":"object-id"}}, :headers => {})
41
41
 
42
42
  resource = TestObject::NestedObject.get("my-id", testobject_id: 'object-id')
@@ -46,78 +46,78 @@ module Mollie
46
46
  end
47
47
 
48
48
  def test_create
49
- stub_request(:post, "https://api.mollie.nl/v1/testobjects")
50
- .with(body: %{{"amount":1.95}})
51
- .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.00}}, :headers => {})
49
+ stub_request(:post, "https://api.mollie.com/v2/testobjects")
50
+ .with(body: %{{"foo":1.95}})
51
+ .to_return(:status => 201, :body => %{{"id":"my-id", "foo":1.00}}, :headers => {})
52
52
 
53
- resource = TestObject.create(amount: 1.95)
53
+ resource = TestObject.create(foo: 1.95)
54
54
 
55
55
  assert_equal "my-id", resource.id
56
- assert_equal BigDecimal.new("1.00"), resource.amount
56
+ assert_equal BigDecimal.new("1.00"), resource.foo
57
57
  end
58
58
 
59
59
  def test_nested_create
60
- stub_request(:post, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects")
61
- .with(body: %{{"amount":1.95}})
62
- .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "amount":1.00}}, :headers => {})
60
+ stub_request(:post, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects")
61
+ .with(body: %{{"foo":1.95}})
62
+ .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "foo":1.00}}, :headers => {})
63
63
 
64
- resource = TestObject::NestedObject.create(amount: 1.95, testobject_id: "object-id")
64
+ resource = TestObject::NestedObject.create(foo: 1.95, testobject_id: "object-id")
65
65
 
66
66
  assert_equal "my-id", resource.id
67
67
  assert_equal "object-id", resource.testobject_id
68
- assert_equal BigDecimal.new("1.00"), resource.amount
68
+ assert_equal BigDecimal.new("1.00"), resource.foo
69
69
  end
70
70
 
71
71
  def test_update
72
- stub_request(:post, "https://api.mollie.nl/v1/testobjects/my-id")
73
- .with(body: %{{"amount":1.95}})
74
- .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.00}}, :headers => {})
72
+ stub_request(:patch, "https://api.mollie.com/v2/testobjects/my-id")
73
+ .with(body: %{{"foo":1.95}})
74
+ .to_return(:status => 201, :body => %{{"id":"my-id", "foo":1.00}}, :headers => {})
75
75
 
76
- resource = TestObject.update("my-id", amount: 1.95)
76
+ resource = TestObject.update("my-id", foo: 1.95)
77
77
 
78
78
  assert_equal "my-id", resource.id
79
- assert_equal BigDecimal.new("1.00"), resource.amount
79
+ assert_equal BigDecimal.new("1.00"), resource.foo
80
80
  end
81
81
 
82
82
  def test_update_instance
83
- stub_request(:post, "https://api.mollie.nl/v1/testobjects/my-id")
84
- .with(body: %{{"amount":1.95}})
85
- .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.00}}, :headers => {})
83
+ stub_request(:patch, "https://api.mollie.com/v2/testobjects/my-id")
84
+ .with(body: %{{"foo":1.95}})
85
+ .to_return(:status => 201, :body => %{{"id":"my-id", "foo":1.00}}, :headers => {})
86
86
 
87
87
  resource = TestObject.new(id: "my-id")
88
- resource.update(amount: 1.95)
88
+ resource.update(foo: 1.95)
89
89
 
90
90
  assert_equal "my-id", resource.id
91
- assert_equal BigDecimal.new("1.00"), resource.amount
91
+ assert_equal BigDecimal.new("1.00"), resource.foo
92
92
  end
93
93
 
94
94
  def test_nested_update
95
- stub_request(:post, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
96
- .with(body: %{{"amount":1.95}})
97
- .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "amount":1.00}}, :headers => {})
95
+ stub_request(:patch, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects/my-id")
96
+ .with(body: %{{"foo":1.95}})
97
+ .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "foo":1.00}}, :headers => {})
98
98
 
99
- resource = TestObject::NestedObject.update("my-id", amount: 1.95, testobject_id: "object-id")
99
+ resource = TestObject::NestedObject.update("my-id", foo: 1.95, testobject_id: "object-id")
100
100
 
101
101
  assert_equal "my-id", resource.id
102
102
  assert_equal "object-id", resource.testobject_id
103
- assert_equal BigDecimal.new("1.00"), resource.amount
103
+ assert_equal BigDecimal.new("1.00"), resource.foo
104
104
  end
105
105
 
106
106
  def test_nested_update_instance
107
- stub_request(:post, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
108
- .with(body: %{{"amount":1.95}})
109
- .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "amount":1.00}}, :headers => {})
107
+ stub_request(:patch, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects/my-id")
108
+ .with(body: %{{"foo":1.95}})
109
+ .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "foo":1.00}}, :headers => {})
110
110
 
111
111
  resource = TestObject::NestedObject.new(id: "my-id", testobject_id: "object-id")
112
- resource.update(amount: 1.95)
112
+ resource.update(foo: 1.95)
113
113
 
114
114
  assert_equal "my-id", resource.id
115
115
  assert_equal "object-id", resource.testobject_id
116
- assert_equal BigDecimal.new("1.00"), resource.amount
116
+ assert_equal BigDecimal.new("1.00"), resource.foo
117
117
  end
118
118
 
119
119
  def test_delete
120
- stub_request(:delete, "https://api.mollie.nl/v1/testobjects/my-id")
120
+ stub_request(:delete, "https://api.mollie.com/v2/testobjects/my-id")
121
121
  .to_return(:status => 204, :headers => {})
122
122
 
123
123
  resource = TestObject.delete("my-id")
@@ -126,7 +126,7 @@ module Mollie
126
126
  end
127
127
 
128
128
  def test_delete_instance
129
- stub_request(:delete, "https://api.mollie.nl/v1/testobjects/my-id")
129
+ stub_request(:delete, "https://api.mollie.com/v2/testobjects/my-id")
130
130
  .to_return(:status => 204, :headers => {})
131
131
 
132
132
  resource = TestObject.new(id: "my-id")
@@ -135,7 +135,7 @@ module Mollie
135
135
  end
136
136
 
137
137
  def test_nested_delete
138
- stub_request(:delete, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
138
+ stub_request(:delete, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects/my-id")
139
139
  .to_return(:status => 204, :headers => {})
140
140
 
141
141
  resource = TestObject::NestedObject.delete("my-id", testobject_id: "object-id")
@@ -144,7 +144,7 @@ module Mollie
144
144
  end
145
145
 
146
146
  def test_nested_delete_instance
147
- stub_request(:delete, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
147
+ stub_request(:delete, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects/my-id")
148
148
  .to_return(:status => 204, :headers => {})
149
149
 
150
150
  resource = TestObject::NestedObject.new(id: "my-id", testobject_id: "object-id")
@@ -153,8 +153,8 @@ module Mollie
153
153
  end
154
154
 
155
155
  def test_all
156
- stub_request(:get, "https://api.mollie.nl/v1/testobjects?count=50&offset=0")
157
- .to_return(:status => 200, :body => %{{"data":[{"id":"my-id"}]}}, :headers => {})
156
+ stub_request(:get, "https://api.mollie.com/v2/testobjects")
157
+ .to_return(:status => 200, :body => %{{"_embedded": {"testobjects": [{"id":"my-id"}]}}}, :headers => {})
158
158
 
159
159
  resource = TestObject.all
160
160
 
@@ -162,8 +162,8 @@ module Mollie
162
162
  end
163
163
 
164
164
  def test_nested_all
165
- stub_request(:get, "https://api.mollie.nl/v1/nestedobjects?count=50&offset=0")
166
- .to_return(:status => 200, :body => %{{"data":[{"id":"my-id"}]}}, :headers => {})
165
+ stub_request(:get, "https://api.mollie.com/v2/nestedobjects")
166
+ .to_return(:status => 200, :body => %{{"_embedded": {"nestedobjects": [{"id":"my-id"}]}}}, :headers => {})
167
167
 
168
168
  resource = TestObject::NestedObject.all
169
169
 
@@ -171,8 +171,8 @@ module Mollie
171
171
  end
172
172
 
173
173
  def test_nested_all_scoped
174
- stub_request(:get, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects?count=50&offset=0")
175
- .to_return(:status => 200, :body => %{{"data":[{"id":"my-id"}]}}, :headers => {})
174
+ stub_request(:get, "https://api.mollie.com/v2/testobjects/object-id/nestedobjects")
175
+ .to_return(:status => 200, :body => %{{"_embedded": {"nestedobjects": [{"id":"my-id"}]}}}, :headers => {})
176
176
 
177
177
  resource = TestObject::NestedObject.all(testobject_id: 'object-id')
178
178
 
@@ -4,32 +4,93 @@ module Mollie
4
4
  class ChargebackTest < Test::Unit::TestCase
5
5
  def test_setting_attributes
6
6
  attributes = {
7
- id: "re_4qqhO89gsT",
8
- payment: {
9
- id: "tr_WDqYK6vllg",
10
- },
11
- amount: "5.95",
12
- chargeback_datetime: "2016-10-08T07:59:53.0Z",
13
- reversed_datetime: "2016-10-08T07:59:53.0Z",
7
+ id: "re_4qqhO89gsT",
8
+ amount: { "value" => "5.95", "currency" => "EUR" },
9
+ created_at: "2016-10-08T07:59:53.0Z",
10
+ reversed_at: "2016-10-08T07:59:53.0Z",
11
+ payment_id: "tr_WDqYK6vllg",
12
+ settlement_amount: { "value" => "-5.95", "currency" => "EUR" }
14
13
  }
15
14
 
16
15
  chargeback = Chargeback.new(attributes)
17
16
 
18
17
  assert_equal "re_4qqhO89gsT", chargeback.id
19
- assert_equal BigDecimal.new("5.95"), chargeback.amount
20
- assert_kind_of Payment, chargeback.payment
21
- assert_equal Time.parse("2016-10-08T07:59:53.0Z"), chargeback.chargeback_datetime
22
- assert_equal Time.parse("2016-10-08T07:59:53.0Z"), chargeback.reversed_datetime
18
+ assert_equal BigDecimal.new("5.95"), chargeback.amount.value
19
+ assert_equal "EUR", chargeback.amount.currency
20
+ assert_equal Time.parse("2016-10-08T07:59:53.0Z"), chargeback.created_at
21
+ assert_equal Time.parse("2016-10-08T07:59:53.0Z"), chargeback.reversed_at
22
+ assert_equal "tr_WDqYK6vllg", chargeback.payment_id
23
+ assert_equal BigDecimal.new("-5.95"), chargeback.settlement_amount.value
24
+ assert_equal "EUR", chargeback.settlement_amount.currency
23
25
  end
24
26
 
25
- def test_payment
26
- assert_equal "pay-id", Chargeback.new(payment: "pay-id").payment
27
- assert_equal "pay-id", Chargeback.new(payment: {id: "pay-id"}).payment.id
27
+ def test_reversed?
28
+ assert Chargeback.new(reversed_at: "2016-10-08T07:59:53.0Z").reversed?
29
+ assert !Chargeback.new(reversed_at: nil).reversed?
28
30
  end
29
31
 
30
- def test_reversed?
31
- assert Chargeback.new(reversed_datetime: "2016-10-08T07:59:53.0Z").reversed?
32
- assert !Chargeback.new(reversed_datetime: nil).reversed?
32
+ def test_get_chargeback
33
+ stub_request(:get, "https://api.mollie.com/v2/payments/pay-id/chargebacks/chb-id")
34
+ .to_return(:status => 200, :body => %{{"id":"chb-id"}}, :headers => {})
35
+
36
+ chargeback = Payment::Chargeback.get("chb-id", payment_id: "pay-id")
37
+ assert_equal "chb-id", chargeback.id
38
+ end
39
+
40
+ def test_get_payment
41
+ stub_request(:get, "https://api.mollie.com/v2/payments/tr_WDqYK6vllg/chargebacks/chb_n9z0tp")
42
+ .to_return(:status => 200, :body => %{
43
+ {
44
+ "resource": "chargeback",
45
+ "id": "chb_n9z0tp",
46
+ "paymentId": "tr_WDqYK6vllg"
47
+ }
48
+ }, :headers => {})
49
+
50
+ stub_request(:get, "https://api.mollie.com/v2/payments/tr_WDqYK6vllg")
51
+ .to_return(:status => 200, :body => %{
52
+ {
53
+ "resource": "payment",
54
+ "id": "tr_WDqYK6vllg"
55
+ }
56
+ }, :headers => {})
57
+
58
+ chargeback = Payment::Chargeback.get("chb_n9z0tp", payment_id: "tr_WDqYK6vllg")
59
+ assert_equal "tr_WDqYK6vllg", chargeback.payment.id
33
60
  end
61
+
62
+ def test_get_settlement
63
+ stub_request(:get, "https://api.mollie.com/v2/payments/tr_WDqYK6vllg/chargebacks/chb_n9z0tp")
64
+ .to_return(:status => 200, :body => %{
65
+ {
66
+ "resource": "chargeback",
67
+ "id": "chb_n9z0tp",
68
+ "paymentId": "tr_WDqYK6vllg",
69
+ "_links": {
70
+ "settlement": {
71
+ "href": "https://api.mollie.com/v2/settlements/stl_jDk30akdN",
72
+ "type": "application/hal+json"
73
+ }
74
+ }
75
+ }
76
+ }, :headers => {})
77
+
78
+ stub_request(:get, "https://api.mollie.com/v2/settlements/stl_jDk30akdN")
79
+ .to_return(:status => 200, :body => %{
80
+ {
81
+ "resource": "settlement",
82
+ "id": "stl_jDk30akdN"
83
+ }
84
+ }, :headers => {})
85
+
86
+ chargeback = Payment::Chargeback.get("chb_n9z0tp", payment_id: "tr_WDqYK6vllg")
87
+ assert_equal "stl_jDk30akdN", chargeback.settlement.id
88
+ end
89
+
90
+ def test_nil_settlement
91
+ chargeback = Payment::Chargeback.new(id: "chb_n9z0tp")
92
+ assert_nil chargeback.settlement
93
+ end
94
+
34
95
  end
35
96
  end