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
@@ -6,7 +6,6 @@ module Mollie
6
6
  attributes = {
7
7
  id: 'payments.read',
8
8
  description: 'View your payments',
9
- warning: nil,
10
9
  granted: true
11
10
  }
12
11
 
@@ -14,7 +13,6 @@ module Mollie
14
13
 
15
14
  assert_equal 'payments.read', permission.id
16
15
  assert_equal 'View your payments', permission.description
17
- assert_equal nil, permission.warning
18
16
  assert_equal true, permission.granted
19
17
  end
20
18
  end
@@ -9,17 +9,42 @@ module Mollie
9
9
  name: 'My website name',
10
10
  website: 'https://www.mywebsite.com',
11
11
  email: 'info@mywebsite.com',
12
- phone: '31123456789',
12
+ phone: '+31208202070',
13
13
  category_code: 5399,
14
14
  status: 'unverified',
15
- review: {
15
+ review: {
16
16
  status: 'pending'
17
17
  },
18
- created_datetime: '2017-04-20T09:03:58.0Z',
19
- updated_datetime: '2017-04-20T09:03:58.0Z',
20
- links: {
21
- 'apikeys' => 'https://api.mollie.nl/v1/profiles/pfl_v9hTwCvYqw/apikeys',
22
- 'checkout_preview_url' => 'https://www.mollie.com/beheer/account_profielen/preview-payscreen/1337',
18
+ created_at: '2017-04-20T09:03:58.0Z',
19
+ _links: {
20
+ "self" => {
21
+ "href" => "https://api.mollie.com/v2/profiles/pfl_v9hTwCvYqw",
22
+ "type" => "application/hal+json"
23
+ },
24
+ "chargebacks" => {
25
+ "href" => "https://api.mollie.com/v2/chargebacks?profileId=pfl_v9hTwCvYqw",
26
+ "type" => "application/hal+json"
27
+ },
28
+ "methods" => {
29
+ "href" => "https://api.mollie.com/v2/methods?profileId=pfl_v9hTwCvYqw",
30
+ "type" => "application/hal+json"
31
+ },
32
+ "payments" => {
33
+ "href" => "https://api.mollie.com/v2/payments?profileId=pfl_v9hTwCvYqw",
34
+ "type" => "application/hal+json"
35
+ },
36
+ "refunds" => {
37
+ "href" => "https://api.mollie.com/v2/refunds?profileId=pfl_v9hTwCvYqw",
38
+ "type" => "application/hal+json"
39
+ },
40
+ "checkout_preview_url" => {
41
+ "href" => "https://www.mollie.com/payscreen/preview/pfl_v9hTwCvYqw",
42
+ "type" => "text/html"
43
+ },
44
+ "documentation" => {
45
+ "href" => "https://docs.mollie.com/reference/v2/profiles-api/create-profile",
46
+ "type" => "text/html"
47
+ }
23
48
  }
24
49
  }
25
50
 
@@ -30,14 +55,12 @@ module Mollie
30
55
  assert_equal 'My website name', profile.name
31
56
  assert_equal 'https://www.mywebsite.com', profile.website
32
57
  assert_equal 'info@mywebsite.com', profile.email
33
- assert_equal '31123456789', profile.phone
58
+ assert_equal '+31208202070', profile.phone
34
59
  assert_equal 5399, profile.category_code
35
60
  assert_equal Profile::STATUS_UNVERIFIED, profile.status
36
61
  assert_equal Profile::REVIEW_STATUS_PENDING, profile.review.status
37
- assert_equal Time.parse('2017-04-20T09:03:58.0Z'), profile.created_datetime
38
- assert_equal Time.parse('2017-04-20T09:03:58.0Z'), profile.updated_datetime
39
- assert_equal 'https://api.mollie.nl/v1/profiles/pfl_v9hTwCvYqw/apikeys', profile.apikeys_url
40
- assert_equal 'https://www.mollie.com/beheer/account_profielen/preview-payscreen/1337', profile.checkout_preview_url
62
+ assert_equal Time.parse('2017-04-20T09:03:58.0Z'), profile.created_at
63
+ assert_equal 'https://www.mollie.com/payscreen/preview/pfl_v9hTwCvYqw', profile.checkout_preview_url
41
64
  end
42
65
 
43
66
  def test_status_unverified
@@ -65,34 +88,105 @@ module Mollie
65
88
  assert !Profile.new(review: { status: 'not-rejected' }).review_rejected?
66
89
  end
67
90
 
68
- def test_list_apikeys
69
- stub_request(:get, "https://api.mollie.nl/v1/profiles/pfl-id/apikeys?count=50&offset=0")
70
- .to_return(:status => 200, :body => %{{"data" : [{"id":"live", "key":"key"}]}}, :headers => {})
71
-
72
- apikeys = Profile.new(id: "pfl-id").apikeys.all
73
-
74
- assert_equal "live", apikeys.first.id
75
- assert_equal "key", apikeys.first.key
91
+ def test_list_chargebacks
92
+ stub_request(:get, "https://api.mollie.com/v2/chargebacks?profileId=pfl_v9hTwCvYqw")
93
+ .to_return(:status => 200, :body => %{
94
+ {
95
+ "count": 2,
96
+ "_embedded": {
97
+ "chargebacks": [
98
+ {
99
+ "resource": "chargeback",
100
+ "id": "chb_n9z0tp"
101
+ },
102
+ {
103
+ "resource": "chargeback",
104
+ "id": "chb_d2ee73"
105
+ }
106
+ ]
107
+ }
108
+ }
109
+ }, :headers => {})
110
+
111
+ profile = Profile.new(id: "pfl_v9hTwCvYqw")
112
+ chargebacks = profile.chargebacks
113
+ assert_equal "chb_n9z0tp", chargebacks.first.id
76
114
  end
77
115
 
78
- def test_update_apikey
79
- stub_request(:post, "https://api.mollie.nl/v1/profiles/pfl-id/apikeys/live")
80
- .to_return(:status => 200, :body => %{{"id":"live", "key":"key"}}, :headers => {})
81
-
82
- apikey = Profile.new(id: "pfl-id").apikeys.update("live")
83
-
84
- assert_equal "live", apikey.id
85
- assert_equal "key", apikey.key
116
+ def test_list_methods
117
+ stub_request(:get, "https://api.mollie.com/v2/methods?profileId=pfl_v9hTwCvYqw")
118
+ .to_return(:status => 200, :body => %{
119
+ {
120
+ "count": 2,
121
+ "_embedded": {
122
+ "methods": [
123
+ {
124
+ "resource": "method",
125
+ "id": "ideal"
126
+ },
127
+ {
128
+ "resource": "method",
129
+ "id": "creditcard"
130
+ }
131
+ ]
132
+ }
133
+ }
134
+ }, :headers => {})
135
+
136
+ profile = Profile.new(id: "pfl_v9hTwCvYqw")
137
+ methods = profile.methods
138
+ assert_equal "ideal", methods.first.id
86
139
  end
87
140
 
88
- def test_get_apikey
89
- stub_request(:get, "https://api.mollie.nl/v1/profiles/pfl-id/apikeys/live")
90
- .to_return(:status => 200, :body => %{{"id":"live", "key":"key"}}, :headers => {})
91
-
92
- apikey = Profile.new(id: "pfl-id").apikeys.get("live")
141
+ def test_list_payments
142
+ stub_request(:get, "https://api.mollie.com/v2/payments?profileId=pfl_v9hTwCvYqw")
143
+ .to_return(:status => 200, :body => %{
144
+ {
145
+ "count": 2,
146
+ "_embedded": {
147
+ "payments": [
148
+ {
149
+ "resource": "payment",
150
+ "id": "tr_7UhSN1zuXS"
151
+ },
152
+ {
153
+ "resource": "payment",
154
+ "id": "tr_U3sYDd3rKl"
155
+ }
156
+ ]
157
+ }
158
+ }
159
+ }, :headers => {})
160
+
161
+ profile = Profile.new(id: "pfl_v9hTwCvYqw")
162
+ payments = profile.payments
163
+ assert_equal "tr_7UhSN1zuXS", payments.first.id
164
+ end
93
165
 
94
- assert_equal "live", apikey.id
95
- assert_equal "key", apikey.key
166
+ def test_list_refunds
167
+ stub_request(:get, "https://api.mollie.com/v2/refunds?profileId=pfl_v9hTwCvYqw")
168
+ .to_return(:status => 200, :body => %{
169
+ {
170
+ "count": 2,
171
+ "_embedded": {
172
+ "refunds": [
173
+ {
174
+ "resource": "refund",
175
+ "id": "re_4qqhO89gsT"
176
+ },
177
+ {
178
+ "resource": "refund",
179
+ "id": "re_5hN0lZFFIg"
180
+ }
181
+ ]
182
+ }
183
+ }
184
+ }, :headers => {})
185
+
186
+ profile = Profile.new(id: "pfl_v9hTwCvYqw")
187
+ refunds = profile.refunds
188
+ assert_equal "re_4qqhO89gsT", refunds.first.id
96
189
  end
190
+
97
191
  end
98
192
  end
@@ -4,22 +4,26 @@ module Mollie
4
4
  class RefundTest < 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
- refunded_datetime: "2016-10-08T07:59:53.0Z",
13
- status: "pending"
7
+ id: "re_4qqhO89gsT",
8
+ amount: { "value" => "5.95", "currency" => "EUR" },
9
+ status: "pending",
10
+ created_at: "2016-10-08T07:59:53.0Z",
11
+ description: "Order",
12
+ payment_id: "tr_WDqYK6vllg",
13
+ settlement_amount: { "value" => "-5.95", "currency" => "EUR" }
14
14
  }
15
15
 
16
16
  refund = Refund.new(attributes)
17
17
 
18
18
  assert_equal "re_4qqhO89gsT", refund.id
19
- assert_equal BigDecimal.new("5.95"), refund.amount
20
- assert_kind_of Payment, refund.payment
21
- assert_equal Time.parse("2016-10-08T07:59:53.0Z"), refund.refunded_datetime
19
+ assert_equal BigDecimal.new("5.95"), refund.amount.value
20
+ assert_equal "EUR", refund.amount.currency
22
21
  assert_equal Refund::STATUS_PENDING, refund.status
22
+ assert_equal Time.parse("2016-10-08T07:59:53.0Z"), refund.created_at
23
+ assert_equal "Order", refund.description
24
+ assert_equal "tr_WDqYK6vllg", refund.payment_id
25
+ assert_equal BigDecimal.new("-5.95"), refund.settlement_amount.value
26
+ assert_equal "EUR", refund.settlement_amount.currency
23
27
  end
24
28
 
25
29
  def test_pending?
@@ -36,5 +40,81 @@ module Mollie
36
40
  assert Refund.new(status: Refund::STATUS_REFUNDED).refunded?
37
41
  assert !Refund.new(status: 'not-refunded').refunded?
38
42
  end
43
+
44
+ def test_failed?
45
+ assert Refund.new(status: Refund::STATUS_FAILED).failed?
46
+ assert !Refund.new(status: 'not-failed').failed?
47
+ end
48
+
49
+ def test_get_refund
50
+ stub_request(:get, "https://api.mollie.com/v2/payments/pay-id/refunds/ref-id")
51
+ .to_return(:status => 200, :body => %{{"id":"ref-id"}}, :headers => {})
52
+
53
+ refund = Payment::Refund.get("ref-id", payment_id: "pay-id")
54
+ assert_equal "ref-id", refund.id
55
+ end
56
+
57
+ def test_delete_refund
58
+ stub_request(:delete, "https://api.mollie.com/v2/payments/pay-id/refunds/ref-id")
59
+ .to_return(:status => 204, :headers => {})
60
+
61
+ refund = Payment::Refund.delete("ref-id", payment_id: "pay-id")
62
+ assert_equal nil, refund
63
+ end
64
+
65
+ def test_get_payment
66
+ stub_request(:get, "https://api.mollie.com/v2/payments/tr_WDqYK6vllg/refunds/re_4qqhO89gsT")
67
+ .to_return(:status => 200, :body => %{
68
+ {
69
+ "resource": "refund",
70
+ "id": "re_4qqhO89gsT",
71
+ "paymentId": "tr_WDqYK6vllg"
72
+ }
73
+ }, :headers => {})
74
+
75
+ stub_request(:get, "https://api.mollie.com/v2/payments/tr_WDqYK6vllg")
76
+ .to_return(:status => 200, :body => %{
77
+ {
78
+ "resource": "payment",
79
+ "id": "tr_WDqYK6vllg"
80
+ }
81
+ }, :headers => {})
82
+
83
+ refund = Payment::Refund.get("re_4qqhO89gsT", payment_id: "tr_WDqYK6vllg")
84
+ assert_equal "tr_WDqYK6vllg", refund.payment.id
85
+ end
86
+
87
+ def test_get_settlement
88
+ stub_request(:get, "https://api.mollie.com/v2/payments/tr_WDqYK6vllg/refunds/re_4qqhO89gsT")
89
+ .to_return(:status => 200, :body => %{
90
+ {
91
+ "resource": "refund",
92
+ "id": "re_4qqhO89gsT",
93
+ "paymentId": "tr_WDqYK6vllg",
94
+ "_links": {
95
+ "settlement": {
96
+ "href": "https://api.mollie.com/v2/settlements/stl_jDk30akdN",
97
+ "type": "application/hal+json"
98
+ }
99
+ }
100
+ }
101
+ }, :headers => {})
102
+
103
+ stub_request(:get, "https://api.mollie.com/v2/settlements/stl_jDk30akdN")
104
+ .to_return(:status => 200, :body => %{
105
+ {
106
+ "resource": "settlement",
107
+ "id": "stl_jDk30akdN"
108
+ }
109
+ }, :headers => {})
110
+
111
+ chargeback = Payment::Refund.get("re_4qqhO89gsT", payment_id: "tr_WDqYK6vllg")
112
+ assert_equal "stl_jDk30akdN", chargeback.settlement.id
113
+ end
114
+
115
+ def test_nil_settlement
116
+ refund = Payment::Refund.new(id: "tr_WDqYK6vllg")
117
+ assert refund.settlement.nil?
118
+ end
39
119
  end
40
120
  end
@@ -9,13 +9,11 @@ module Mollie
9
9
  end
10
10
 
11
11
  def test_list_chargebacks
12
- stub_request(:get, "https://api.mollie.nl/v1/settlements/set-id/chargebacks?count=50&offset=0")
13
- .to_return(:status => 200, :body => %{{"data" : [{"id":"chg-id", "settlement_id":"set-id"}]}}, :headers => {})
12
+ stub_request(:get, "https://api.mollie.com/v2/settlements/set-id/chargebacks")
13
+ .to_return(:status => 200, :body => %{{"_embedded" : { "chargebacks" : [{"id":"chg-id", "settlement_id":"set-id"}]}} }, :headers => {})
14
14
 
15
15
  chargebacks = Chargeback.all(settlement_id: "set-id")
16
-
17
16
  assert_equal "chg-id", chargebacks.first.id
18
- assert_equal "set-id", chargebacks.first.settlement_id
19
17
  end
20
18
  end
21
19
  end
@@ -9,8 +9,8 @@ module Mollie
9
9
  end
10
10
 
11
11
  def test_list_payments
12
- stub_request(:get, "https://api.mollie.nl/v1/settlements/set-id/payments?count=50&offset=0")
13
- .to_return(:status => 200, :body => %{{"data" : [{"id":"pay-id", "settlement_id":"set-id"}]}}, :headers => {})
12
+ stub_request(:get, "https://api.mollie.com/v2/settlements/set-id/payments")
13
+ .to_return(:status => 200, :body => %{{"_embedded" : { "payments" : [{"id":"pay-id", "settlement_id":"set-id"}]}}}, :headers => {})
14
14
 
15
15
  payments = Payment.all(settlement_id: "set-id")
16
16
 
@@ -9,13 +9,12 @@ module Mollie
9
9
  end
10
10
 
11
11
  def test_list_refunds
12
- stub_request(:get, "https://api.mollie.nl/v1/settlements/set-id/refunds?count=50&offset=0")
13
- .to_return(:status => 200, :body => %{{"data" : [{"id":"re-id", "payment": {"id":"pay-id"}}]}}, :headers => {})
12
+ stub_request(:get, "https://api.mollie.com/v2/settlements/set-id/refunds")
13
+ .to_return(:status => 200, :body => %{{"_embedded" : {"refunds" : [{"id":"re-id"}]}}}, :headers => {})
14
14
 
15
15
  refunds = Mollie::Settlement::Refund.all(settlement_id: "set-id")
16
16
 
17
17
  assert_equal "re-id", refunds.first.id
18
- assert_equal "pay-id", refunds.first.payment.id
19
18
  end
20
19
  end
21
20
  end
@@ -4,137 +4,175 @@ module Mollie
4
4
  class SettlementTest < Test::Unit::TestCase
5
5
  def test_setting_attributes
6
6
  attributes = {
7
- id: 'stl_jDk30akdN',
8
- reference: '1234567.1511.03',
9
- settled_datetime: '2015-11-06T06:00:02.0Z',
10
- amount: 39.75,
11
- periods: {
7
+ id: 'stl_jDk30akdN',
8
+ reference: '1234567.1511.03',
9
+ settled_at: '2015-11-06T06:00:02.0Z',
10
+ amount: { "value" => 39.75, "currency" => "EUR" },
11
+ periods: {
12
12
  "2015" => {
13
13
  "11" => {
14
14
  revenue: [
15
- {
16
- description: 'iDEAL',
17
- method: 'ideal',
18
- count: 6,
19
- amount: {
20
- net: 86.1000,
21
- vat: nil,
22
- gross: 86.1000
23
- }
24
- },
25
- {
26
- description: 'Refunds iDEAL',
27
- method: 'refund',
28
- count: 2,
29
- amount: {
30
- net: -43.2000,
31
- vat: nil,
32
- gross: -43.2000
33
- }
34
- }
35
- ],
36
- costs: [
37
- {
38
- description: 'iDEAL',
39
- method: 'ideal',
40
- count: 6,
41
- rate: {
42
- fixed: 0.3500,
43
- percentage: nil
44
- },
45
- amount: {
46
- net: 2.1000,
47
- vat: 0.4410,
48
- gross: 2.5410
49
- }
50
- },
51
- {
52
- description: 'Refunds iDEAL',
53
- method: 'refund',
54
- count: 2,
55
- rate: {
56
- fixed: 0.2500,
57
- percentage: nil
58
- },
59
- amount: {
60
- net: 0.5000,
61
- vat: 0.1050,
62
- gross: 0.6050
63
- }
64
- }
65
- ]
15
+ {
16
+ description: 'iDEAL',
17
+ method: 'ideal',
18
+ count: 6,
19
+ amount_net: {
20
+ value: '86.1000',
21
+ currency: 'EUR'
22
+ },
23
+ amount_vat: nil,
24
+ amount_gross: {
25
+ value: '86.1000',
26
+ currency: 'EUR'
27
+ }
28
+ },
29
+ {
30
+ description: 'Refunds iDEAL',
31
+ method: 'refund',
32
+ count: 2,
33
+ amount_net: {
34
+ value: '-43.2000',
35
+ currency: 'EUR'
36
+ },
37
+ amount_vat: nil,
38
+ amount_gross: {
39
+ value: '43.2000',
40
+ currency: 'EUR'
41
+ }
42
+ }
43
+ ],
44
+ costs: [
45
+ {
46
+ description: 'iDEAL',
47
+ method: 'ideal',
48
+ count: 6,
49
+ rate: {
50
+ fixed: {
51
+ value: '0.3500',
52
+ currency: 'EUR'
53
+ },
54
+ percentage: nil
55
+ },
56
+ amount_net: {
57
+ value: '2.1000',
58
+ currency: 'EUR'
59
+ },
60
+ amount_vat: {
61
+ value: '0.4410',
62
+ currency: 'EUR'
63
+ },
64
+ amount_gross: {
65
+ value: '2.5410',
66
+ currency: 'EUR'
67
+ }
68
+ },
69
+ {
70
+ description: 'Refunds iDEAL',
71
+ method: 'refund',
72
+ count: 2,
73
+ rate: {
74
+ fixed: {
75
+ value: '0.3500',
76
+ currency: 'EUR'
77
+ },
78
+ percentage: nil
79
+ },
80
+ amount_net: {
81
+ value: '0.5000',
82
+ currency: 'EUR'
83
+ },
84
+ amount_vat: {
85
+ value: '0.1050',
86
+ currency: 'EUR'
87
+ },
88
+ amount_gross: {
89
+ value: '0.6050',
90
+ currency: 'EUR'
91
+ }
92
+ }
93
+ ]
66
94
  }
67
95
  }
68
96
  },
69
- links: {
70
- 'payments' => 'https://api.mollie.nl/v1/settlements/stl_jDk30akdN/payments',
97
+ _links: {
98
+ "payments" => {
99
+ "href" => "https://api.mollie.com/v2/settlements/stl_jDk30akdN/payments",
100
+ "type" => "application/hal+json"
101
+ },
102
+ "refunds" => {
103
+ "href" => "https://api.mollie.com/v2/settlements/stl_jDk30akdN/refunds",
104
+ "type" => "application/hal+json"
105
+ },
106
+ "chargebacks" => {
107
+ "href" => "https://api.mollie.com/v2/settlements/stl_jDk30akdN/chargebacks",
108
+ "type" => "application/hal+json"
109
+ }
71
110
  },
72
- payment_ids: [
73
- 'tr_PBHPvA2ViG',
74
- 'tr_GAHivPBVP2',
75
- 'tr_2VBPiPvGAH',
76
- 'tr_2iHGBvPPVA',
77
- 'tr_VPH2iPGvAB',
78
- 'tr_AGPVviP2BH',
79
- ],
80
- refund_ids: [
81
- 're_PvGHiV2BPA',
82
- 're_APBiGPH2vV',
83
- ]
84
111
  }
85
112
 
86
113
  settlement = Settlement.new(attributes)
87
114
 
88
115
  assert_equal 'stl_jDk30akdN', settlement.id
89
116
  assert_equal '1234567.1511.03', settlement.reference
90
- assert_equal Time.parse('2015-11-06T06:00:02.0Z'), settlement.settled_datetime
91
- assert_equal 39.75, settlement.amount
117
+ assert_equal Time.parse('2015-11-06T06:00:02.0Z'), settlement.settled_at
118
+ assert_equal 39.75, settlement.amount.value
119
+ assert_equal 'EUR', settlement.amount.currency
92
120
 
93
121
  assert_equal 'iDEAL', settlement.periods[:'2015'][:'11'].revenue[0].description
94
122
  assert_equal 'ideal', settlement.periods[:'2015'][:'11'].revenue[0][:method]
95
123
  assert_equal 6, settlement.periods[:'2015'][:'11'].revenue[0].count
96
- assert_equal 86.1, settlement.periods[:'2015'][:'11'].revenue[0].amount.net
97
- assert_equal nil, settlement.periods[:'2015'][:'11'].revenue[0].amount.vat
98
- assert_equal 86.1, settlement.periods[:'2015'][:'11'].revenue[0].amount.gross
124
+ assert_equal '86.1000', settlement.periods[:'2015'][:'11'].revenue[0].amount_net.value
125
+ assert_equal nil, settlement.periods[:'2015'][:'11'].revenue[0].amount_vat
126
+ assert_equal '86.1000', settlement.periods[:'2015'][:'11'].revenue[0].amount_gross.value
99
127
 
100
128
  assert_equal 'Refunds iDEAL', settlement.periods[:'2015'][:'11'].revenue[1].description
101
129
  assert_equal 'refund', settlement.periods[:'2015'][:'11'].revenue[1][:method]
102
130
  assert_equal 2, settlement.periods[:'2015'][:'11'].revenue[1].count
103
- assert_equal -43.2, settlement.periods[:'2015'][:'11'].revenue[1].amount.net
104
- assert_equal nil, settlement.periods[:'2015'][:'11'].revenue[1].amount.vat
105
- assert_equal -43.2, settlement.periods[:'2015'][:'11'].revenue[1].amount.gross
131
+ assert_equal "-43.2000", settlement.periods[:'2015'][:'11'].revenue[1].amount_net.value
132
+ assert_equal nil, settlement.periods[:'2015'][:'11'].revenue[1].amount_vat
133
+ assert_equal "43.2000", settlement.periods[:'2015'][:'11'].revenue[1].amount_gross.value
106
134
 
107
135
  assert_equal 'iDEAL', settlement.periods[:'2015'][:'11'].costs[0].description
108
136
  assert_equal 'ideal', settlement.periods[:'2015'][:'11'].costs[0][:method]
109
137
  assert_equal 6, settlement.periods[:'2015'][:'11'].costs[0].count
110
- assert_equal 0.35, settlement.periods[:'2015'][:'11'].costs[0].rate.fixed
138
+ assert_equal "0.3500", settlement.periods[:'2015'][:'11'].costs[0].rate.fixed.value
111
139
  assert_equal nil, settlement.periods[:'2015'][:'11'].costs[0].rate.percentage
112
- assert_equal 2.1, settlement.periods[:'2015'][:'11'].costs[0].amount.net
113
- assert_equal 0.441, settlement.periods[:'2015'][:'11'].costs[0].amount.vat
114
- assert_equal 2.541, settlement.periods[:'2015'][:'11'].costs[0].amount.gross
140
+ assert_equal "2.1000", settlement.periods[:'2015'][:'11'].costs[0].amount_net.value
141
+ assert_equal "0.4410", settlement.periods[:'2015'][:'11'].costs[0].amount_vat.value
142
+ assert_equal "2.5410", settlement.periods[:'2015'][:'11'].costs[0].amount_gross.value
115
143
 
116
144
  assert_equal 'Refunds iDEAL', settlement.periods[:'2015'][:'11'].costs[1].description
117
145
  assert_equal 'refund', settlement.periods[:'2015'][:'11'].costs[1][:method]
118
146
  assert_equal 2, settlement.periods[:'2015'][:'11'].costs[1].count
119
- assert_equal 0.25, settlement.periods[:'2015'][:'11'].costs[1].rate.fixed
147
+ assert_equal "0.3500", settlement.periods[:'2015'][:'11'].costs[1].rate.fixed.value
120
148
  assert_equal nil, settlement.periods[:'2015'][:'11'].costs[1].rate.percentage
121
- assert_equal 0.5, settlement.periods[:'2015'][:'11'].costs[1].amount.net
122
- assert_equal 0.105, settlement.periods[:'2015'][:'11'].costs[1].amount.vat
123
- assert_equal 0.605, settlement.periods[:'2015'][:'11'].costs[1].amount.gross
124
-
125
- assert_equal 'https://api.mollie.nl/v1/settlements/stl_jDk30akdN/payments', settlement.payments
126
- assert_equal 'tr_PBHPvA2ViG', settlement.payment_ids[0]
127
- assert_equal 'tr_GAHivPBVP2', settlement.payment_ids[1]
128
- assert_equal 'tr_2VBPiPvGAH', settlement.payment_ids[2]
129
- assert_equal 'tr_2iHGBvPPVA', settlement.payment_ids[3]
130
- assert_equal 'tr_VPH2iPGvAB', settlement.payment_ids[4]
131
- assert_equal 'tr_AGPVviP2BH', settlement.payment_ids[5]
132
- assert_equal 're_PvGHiV2BPA', settlement.refund_ids[0]
133
- assert_equal 're_APBiGPH2vV', settlement.refund_ids[1]
149
+ assert_equal "0.5000", settlement.periods[:'2015'][:'11'].costs[1].amount_net.value
150
+ assert_equal "0.1050", settlement.periods[:'2015'][:'11'].costs[1].amount_vat.value
151
+ assert_equal "0.6050", settlement.periods[:'2015'][:'11'].costs[1].amount_gross.value
152
+ end
153
+
154
+ def test_status_open
155
+ assert Settlement.new(status: Settlement::STATUS_OPEN).open?
156
+ assert !Settlement.new(status: 'not-open').open?
157
+ end
158
+
159
+ def test_status_pending
160
+ assert Settlement.new(status: Settlement::STATUS_PENDING).pending?
161
+ assert !Settlement.new(status: 'not-pending').pending?
162
+ end
163
+
164
+ def test_status_paidout
165
+ assert Settlement.new(status: Settlement::STATUS_PAIDOUT).paidout?
166
+ assert !Settlement.new(status: 'not-paidout').paidout?
167
+ end
168
+
169
+ def test_status_failed
170
+ assert Settlement.new(status: Settlement::STATUS_FAILED).failed?
171
+ assert !Settlement.new(status: 'not-failed').failed?
134
172
  end
135
173
 
136
174
  def test_open_settlement
137
- stub_request(:get, "https://api.mollie.nl/v1/settlements/open")
175
+ stub_request(:get, "https://api.mollie.com/v2/settlements/open")
138
176
  .to_return(:status => 200, :body => %{{"id":"set-id"}}, :headers => {})
139
177
 
140
178
  settlement = Settlement.open
@@ -144,7 +182,7 @@ module Mollie
144
182
  end
145
183
 
146
184
  def test_next_settlement
147
- stub_request(:get, "https://api.mollie.nl/v1/settlements/next")
185
+ stub_request(:get, "https://api.mollie.com/v2/settlements/next")
148
186
  .to_return(:status => 200, :body => %{{"id":"set-id"}}, :headers => {})
149
187
 
150
188
  settlement = Settlement.next
@@ -152,5 +190,68 @@ module Mollie
152
190
  assert_kind_of Settlement, settlement
153
191
  assert_equal "set-id", settlement.id
154
192
  end
193
+
194
+ def test_list_payments
195
+ stub_request(:get, "https://api.mollie.com/v2/settlements/stl-id/payments")
196
+ .to_return(:status => 200, :body => %{
197
+ { "_embedded" : {"payments" : [{ "id": "pay-id", "settlement_id": "stl-id" }]}}
198
+ }, :headers => {})
199
+
200
+ payments = Settlement.new(id: "stl-id").payments
201
+ assert_equal Settlement::Payment, payments.klass
202
+ assert_equal "pay-id", payments.first.id
203
+ end
204
+
205
+ def test_list_refunds
206
+ stub_request(:get, "https://api.mollie.com/v2/settlements/stl-id/refunds")
207
+ .to_return(:status => 200, :body => %{
208
+ { "_embedded" : {"refunds" : [{ "id": "ref-id", "settlement_id": "stl-id" }]}}
209
+ }, :headers => {})
210
+
211
+ refunds = Settlement.new(id: "stl-id").refunds
212
+ assert_equal Settlement::Refund, refunds.klass
213
+ assert_equal "ref-id", refunds.first.id
214
+ end
215
+
216
+ def test_list_chargebacks
217
+ stub_request(:get, "https://api.mollie.com/v2/settlements/stl-id/chargebacks")
218
+ .to_return(:status => 200, :body => %{
219
+ { "_embedded" : {"chargebacks" : [{ "id": "chb-id", "settlement_id": "stl-id" }]}}
220
+ }, :headers => {})
221
+
222
+ chargebacks = Settlement.new(id: "stl-id").chargebacks
223
+ assert_equal Settlement::Chargeback, chargebacks.klass
224
+ assert_equal "chb-id", chargebacks.first.id
225
+ end
226
+
227
+ def test_get_invoice
228
+ stub_request(:get, "https://api.mollie.com/v2/settlements/stl_jDk30akdN")
229
+ .to_return(
230
+ status: 200,
231
+ body: %{
232
+ {
233
+ "resource": "settlement",
234
+ "id": "stl_jDk30akdN",
235
+ "invoice_id": "inv_FrvewDA3Pr"
236
+ }
237
+ }
238
+ )
239
+
240
+ stub_request(:get, "https://api.mollie.com/v2/invoices/inv_FrvewDA3Pr")
241
+ .to_return(status: 200, body: %{
242
+ {
243
+ "resource": "invoice",
244
+ "id": "inv_FrvewDA3Pr"
245
+ }
246
+ })
247
+
248
+ settlement = Settlement.get("stl_jDk30akdN")
249
+ assert_equal "inv_FrvewDA3Pr", settlement.invoice.id
250
+ end
251
+
252
+ def test_nil_invoice
253
+ settlement = Settlement.new(id: "stl_jDk30akdN")
254
+ assert_nil settlement.invoice
255
+ end
155
256
  end
156
257
  end