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
@@ -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