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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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