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
@@ -17,7 +17,7 @@ module Mollie
17
17
  end
18
18
 
19
19
  def test_perform_http_call_defaults
20
- stub_request(:any, "https://api.mollie.nl/v1/my-method")
20
+ stub_request(:any, "https://api.mollie.com/v2/my-method")
21
21
  .with(:headers => { 'Accept' => 'application/json',
22
22
  'Content-type' => 'application/json',
23
23
  'Authorization' => 'Bearer test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM',
@@ -27,7 +27,7 @@ module Mollie
27
27
  end
28
28
 
29
29
  def test_perform_http_call_key_override
30
- stub_request(:any, "https://localhost/v1/my-method")
30
+ stub_request(:any, "https://localhost/v2/my-method")
31
31
  .with(:headers => { 'Accept' => 'application/json',
32
32
  'Content-type' => 'application/json',
33
33
  'Authorization' => 'Bearer my_key',
@@ -38,7 +38,7 @@ module Mollie
38
38
  end
39
39
 
40
40
  def test_perform_http_call_with_api_key_block
41
- stub_request(:any, "https://api.mollie.nl/v1/my-method")
41
+ stub_request(:any, "https://api.mollie.com/v2/my-method")
42
42
  .with(:headers => { 'Accept' => 'application/json',
43
43
  'Content-type' => 'application/json',
44
44
  'Authorization' => 'Bearer my_key',
@@ -54,7 +54,7 @@ module Mollie
54
54
  end
55
55
 
56
56
  def test_get_request_convert_to_camel_case
57
- stub_request(:get, "https://api.mollie.nl/v1/my-method?myParam=ok")
57
+ stub_request(:get, "https://api.mollie.com/v2/my-method?myParam=ok")
58
58
  .to_return(:status => 200, :body => "{}", :headers => {})
59
59
  client.perform_http_call("GET", "my-method", nil, {}, { my_param: "ok" })
60
60
  end
@@ -81,7 +81,7 @@ module Mollie
81
81
  ]
82
82
  }
83
83
 
84
- stub_request(:get, "https://api.mollie.nl/v1/my-method")
84
+ stub_request(:get, "https://api.mollie.com/v2/my-method")
85
85
  .to_return(:status => 200, :body => response_body, :headers => {})
86
86
  response = client.perform_http_call("GET", "my-method", nil, {})
87
87
 
@@ -91,7 +91,7 @@ module Mollie
91
91
  def test_post_requests_convert_to_camel_case
92
92
  expected_body = %{{"redirectUrl":"my-url"}}
93
93
 
94
- stub_request(:post, "https://api.mollie.nl/v1/my-method")
94
+ stub_request(:post, "https://api.mollie.com/v2/my-method")
95
95
  .with(body: expected_body)
96
96
  .to_return(:status => 200, :body => "{}", :headers => {})
97
97
 
@@ -99,7 +99,7 @@ module Mollie
99
99
  end
100
100
 
101
101
  def test_delete_requests_with_no_content_responses
102
- stub_request(:delete, "https://api.mollie.nl/v1/my-method/1")
102
+ stub_request(:delete, "https://api.mollie.com/v2/my-method/1")
103
103
  .to_return(:status => 204, :body => "", :headers => {})
104
104
 
105
105
  client.perform_http_call("DELETE", "my-method", "1")
@@ -107,16 +107,33 @@ module Mollie
107
107
 
108
108
  def test_error_response
109
109
  response = <<-JSON
110
- {"error": {"message": "Error on field", "field": "my-field"}}
110
+ {
111
+ "status": 401,
112
+ "title": "Unauthorized Request",
113
+ "detail": "Missing authentication, or failed to authenticate",
114
+ "field": "test-field",
115
+ "_links": {
116
+ "documentation": {
117
+ "href": "https://www.mollie.com/en/docs/authentication",
118
+ "type": "text/html"
119
+ }
120
+ }
121
+ }
111
122
  JSON
112
- stub_request(:post, "https://api.mollie.nl/v1/my-method")
113
- .to_return(:status => 500, :body => response, :headers => {})
114
123
 
115
- e = assert_raise Mollie::Exception.new("Error on field") do
124
+ json = JSON.parse(response)
125
+ stub_request(:post, "https://api.mollie.com/v2/my-method")
126
+ .to_return(:status => 401, :body => response, :headers => {})
127
+
128
+ e = assert_raise Mollie::RequestError.new(JSON.parse(response)) do
116
129
  client.perform_http_call("POST", "my-method", nil, {})
117
130
  end
118
131
 
119
- assert_equal "my-field", e.field
132
+ assert_equal(json['status'], e.status)
133
+ assert_equal(json['title'], e.title)
134
+ assert_equal(json['detail'], e.detail)
135
+ assert_equal(json['field'], e.field)
136
+ assert_equal(json['_links'], e.links)
120
137
  end
121
138
  end
122
139
  end
@@ -5,38 +5,114 @@ module Mollie
5
5
  class MandateTest < Test::Unit::TestCase
6
6
  def test_setting_attributes
7
7
  attributes = {
8
- id: "mdt_qtUgejVgMN",
8
+ id: "mdt_h3gAaD5zP",
9
9
  status: "valid",
10
10
  method: "creditcard",
11
- customer_id: "cst_R6JLAuqEgm",
12
11
  details: {
13
12
  card_holder: "John Doe",
14
13
  card_expiry_date: "2016-03-31"
15
14
  },
16
- created_datetime: "2016-04-13T11:32:38.0Z"
15
+ mandate_reference: "YOUR-COMPANY-MD1380",
16
+ signature_date: "2018-05-07",
17
+ created_at: "2016-04-13T11:32:38.0Z",
18
+ _links: {
19
+ "self" => {
20
+ "href" => "https://api.mollie.com/v2/customers/cst_4qqhO89gsT/mandates/mdt_h3gAaD5zP",
21
+ "type" => "application/hal+json"
22
+ },
23
+ "customer" => {
24
+ "href" => "https://api.mollie.com/v2/customers/cst_4qqhO89gsT",
25
+ "type" => "application/hal+json"
26
+ },
27
+ "documentation" => {
28
+ "href" => "https://docs.mollie.com/reference/v2/mandates-api/get-mandate",
29
+ "type" => "text/html"
30
+ }
31
+ }
17
32
  }
18
33
 
19
34
  mandate = Mandate.new(attributes)
20
35
 
21
- assert_equal 'mdt_qtUgejVgMN', mandate.id
36
+ assert_equal 'mdt_h3gAaD5zP', mandate.id
22
37
  assert_equal 'valid', mandate.status
23
38
  assert_equal 'creditcard', mandate.method
24
- assert_equal 'cst_R6JLAuqEgm', mandate.customer_id
25
- assert_equal Time.parse('2016-04-13T11:32:38.0Z'), mandate.created_datetime
39
+ assert_equal 'YOUR-COMPANY-MD1380', mandate.mandate_reference
40
+ assert_equal '2018-05-07', mandate.signature_date
41
+ assert_equal Time.parse('2016-04-13T11:32:38.0Z'), mandate.created_at
26
42
 
27
43
  assert_equal 'John Doe', mandate.details.card_holder
28
44
  assert_equal '2016-03-31', mandate.details.card_expiry_date
29
45
  assert_equal nil, mandate.details.non_existing
30
46
  end
31
47
 
32
- def test_valid_invalid
48
+ def test_valid_invalid_pending
33
49
  mandate = Mandate.new(status: Mandate::STATUS_VALID)
34
50
  assert mandate.valid?
35
- assert !mandate.invalid?
36
51
 
37
52
  mandate = Mandate.new(status: Mandate::STATUS_INVALID)
38
- assert !mandate.valid?
39
53
  assert mandate.invalid?
54
+
55
+ mandate = Mandate.new(status: Mandate::STATUS_PENDING)
56
+ assert mandate.pending?
57
+ end
58
+
59
+ def test_get_mandate
60
+ stub_request(:get, "https://api.mollie.com/v2/customers/cus-id/mandates/man-id")
61
+ .to_return(:status => 200, :body => %{{"id":"man-id", "method":"directdebit"}}, :headers => {})
62
+
63
+ mandate = Customer::Mandate.get("man-id", customer_id: "cus-id")
64
+
65
+ assert_equal "man-id", mandate.id
66
+ assert_equal "directdebit", mandate.method
67
+ end
68
+
69
+ def test_create_mandate
70
+ stub_request(:post, "https://api.mollie.com/v2/customers/cus-id/mandates")
71
+ .with(body: %{{"method":"directdebit"}})
72
+ .to_return(:status => 201, :body => %{{"id":"my-id", "method":"directdebit"}}, :headers => {})
73
+
74
+ mandate = Customer::Mandate.create(
75
+ method: "directdebit",
76
+ customer_id: "cus-id"
77
+ )
78
+
79
+ assert_equal "my-id", mandate.id
80
+ assert_equal "directdebit", mandate.method
81
+ end
82
+
83
+ def test_delete_mandate
84
+ stub_request(:delete, "https://api.mollie.com/v2/customers/cus-id/mandates/man-id")
85
+ .to_return(:status => 204, :headers => {})
86
+
87
+ mandate = Customer::Mandate.delete("man-id", customer_id: "cus-id")
88
+ assert_equal nil, mandate
89
+ end
90
+
91
+ def test_get_customer
92
+ stub_request(:get, "https://api.mollie.com/v2/customers/cst_4qqhO89gsT/mandates/mdt_h3gAaD5zP")
93
+ .to_return(:status => 200, :body => %{
94
+ {
95
+ "resource": "mandate",
96
+ "id": "mdt_h3gAaD5zP",
97
+ "_links": {
98
+ "customer": {
99
+ "href": "https://api.mollie.com/v2/customers/cst_4qqhO89gsT",
100
+ "type": "application/hal+json"
101
+ }
102
+ }
103
+ }
104
+ }, :headers => {})
105
+
106
+ stub_request(:get, "https://api.mollie.com/v2/customers/cst_4qqhO89gsT")
107
+ .to_return(:status => 200, :body => %{
108
+ {
109
+ "resource": "customer",
110
+ "id": "cst_4qqhO89gsT"
111
+ }
112
+ }, :headers => {})
113
+
114
+ mandate = Customer::Mandate.get("mdt_h3gAaD5zP", customer_id: 'cst_4qqhO89gsT')
115
+ assert_equal "cst_4qqhO89gsT", mandate.customer.id
40
116
  end
41
117
  end
42
118
  end
@@ -10,8 +10,8 @@ module Mollie
10
10
 
11
11
 
12
12
  def test_list_payments
13
- stub_request(:get, "https://api.mollie.nl/v1/customers/cus-id/payments?count=50&offset=0")
14
- .to_return(:status => 200, :body => %{{"data" : [{"id":"pay-id", "customer_id":"cus-id"}]}}, :headers => {})
13
+ stub_request(:get, "https://api.mollie.com/v2/customers/cus-id/payments")
14
+ .to_return(:status => 200, :body => %{{"_embedded" : { "payments" : [{"id":"pay-id", "customer_id":"cus-id"}]}}}, :headers => {})
15
15
 
16
16
  payments = Payment.all(customer_id: "cus-id")
17
17
 
@@ -5,20 +5,18 @@ module Mollie
5
5
  class SubscriptionTest < Test::Unit::TestCase
6
6
  def test_setting_attributes
7
7
  attributes = {
8
- id: "sub_rVKGtNd6s3",
9
- customer_id: "cst_stTC2WHAuS",
10
- mode: "live",
11
- created_datetime: "2016-06-01T12:23:34.0Z",
12
- status: "active",
13
- amount: "25.00",
14
- times: 4,
15
- interval: "3 months",
16
- description: "Quarterly payment",
17
- method: "creditcard",
18
- cancelled_datetime: "2016-06-01T12:23:34.0Z",
19
- links: {
20
- 'webhook_url' => "https://example.org/payments/webhook"
21
- }
8
+ id: "sub_rVKGtNd6s3",
9
+ customer_id: "cst_stTC2WHAuS",
10
+ mode: "live",
11
+ created_at: "2016-06-01T12:23:34.0Z",
12
+ status: "active",
13
+ amount: { "value" => "25.00", "currency" => "EUR" },
14
+ times: 4,
15
+ interval: "3 months",
16
+ description: "Quarterly payment",
17
+ method: "creditcard",
18
+ canceled_at: "2016-06-01T12:23:34.0Z",
19
+ webhook_url: "https://example.org/payments/webhook"
22
20
  }
23
21
 
24
22
  subscription = Subscription.new(attributes)
@@ -26,14 +24,15 @@ module Mollie
26
24
  assert_equal "sub_rVKGtNd6s3", subscription.id
27
25
  assert_equal "cst_stTC2WHAuS", subscription.customer_id
28
26
  assert_equal "live", subscription.mode
29
- assert_equal Time.parse("2016-06-01T12:23:34.0Z"), subscription.created_datetime
27
+ assert_equal Time.parse("2016-06-01T12:23:34.0Z"), subscription.created_at
30
28
  assert_equal "active", subscription.status
31
- assert_equal BigDecimal.new(25, 2), subscription.amount
29
+ assert_equal BigDecimal.new("25.00"), subscription.amount.value
30
+ assert_equal "EUR", subscription.amount.currency
32
31
  assert_equal 4, subscription.times
33
32
  assert_equal "3 months", subscription.interval
34
33
  assert_equal "Quarterly payment", subscription.description
35
34
  assert_equal "creditcard", subscription.method
36
- assert_equal Time.parse("2016-06-01T12:23:34.0Z"), subscription.cancelled_datetime
35
+ assert_equal Time.parse("2016-06-01T12:23:34.0Z"), subscription.canceled_at
37
36
  assert_equal "https://example.org/payments/webhook", subscription.webhook_url
38
37
  end
39
38
 
@@ -52,15 +51,67 @@ module Mollie
52
51
  assert !Subscription.new(status: 'not-suspended').suspended?
53
52
  end
54
53
 
55
- def test_status_cancelled
56
- assert Subscription.new(status: Subscription::STATUS_CANCELLED).cancelled?
57
- assert !Subscription.new(status: 'not-cancelled').cancelled?
54
+ def test_status_canceled
55
+ assert Subscription.new(status: Subscription::STATUS_CANCELED).canceled?
56
+ assert !Subscription.new(status: 'not-canceled').canceled?
58
57
  end
59
58
 
60
59
  def test_status_completed
61
60
  assert Subscription.new(status: Subscription::STATUS_COMPLETED).completed?
62
61
  assert !Subscription.new(status: 'not-completed').completed?
63
62
  end
63
+
64
+ def test_get_subscription
65
+ stub_request(:get, "https://api.mollie.com/v2/customers/cus-id/subscriptions/sub-id")
66
+ .to_return(:status => 200, :body => %{{"id":"sub-id", "customer_id":"cus-id"}}, :headers => {})
67
+
68
+ subscription = Customer::Subscription.get("sub-id", customer_id: "cus-id")
69
+
70
+ assert_equal "sub-id", subscription.id
71
+ assert_equal "cus-id", subscription.customer_id
72
+ end
73
+
74
+ def test_create_subscription
75
+ stub_request(:post, "https://api.mollie.com/v2/customers/cus-id/subscriptions")
76
+ .with(body: %{{"amount":{"value":1.95,"currency":"EUR"}}})
77
+ .to_return(:status => 201, :body => %{{"id":"my-id", "amount": { "value" : 1.95, "currency": "EUR"}}}, :headers => {})
78
+
79
+ subscription = Customer::Subscription.create(customer_id: 'cus-id', amount: { value: 1.95, currency: "EUR" })
80
+
81
+ assert_equal "my-id", subscription.id
82
+ assert_equal BigDecimal.new("1.95"), subscription.amount.value
83
+ end
84
+
85
+ def test_delete_subscription
86
+ stub_request(:delete, "https://api.mollie.com/v2/customers/cus-id/subscriptions/sub-id")
87
+ .to_return(:status => 204, :headers => {})
88
+
89
+ subscription = Customer::Subscription.delete("sub-id", customer_id: "cus-id")
90
+ assert_equal nil, subscription
91
+ end
92
+
93
+ def test_get_customer
94
+ stub_request(:get, "https://api.mollie.com/v2/customers/cst_8wmqcHMN4U/subscriptions/sub_rVKGtNd6s3")
95
+ .to_return(:status => 200, :body => %{
96
+ {
97
+ "resource": "subscription",
98
+ "id": "sub_rVKGtNd6s3",
99
+ "customer_id": "cst_8wmqcHMN4U"
100
+ }
101
+ }, :headers => {})
102
+
103
+ stub_request(:get, "https://api.mollie.com/v2/customers/cst_8wmqcHMN4U")
104
+ .to_return(:status => 200, :body => %{
105
+ {
106
+ "resource": "customer",
107
+ "id": "cst_8wmqcHMN4U"
108
+ }
109
+ }, :headers => {})
110
+
111
+ payment = Customer::Subscription.get("sub_rVKGtNd6s3", customer_id: "cst_8wmqcHMN4U")
112
+ customer = payment.customer
113
+ assert_equal "cst_8wmqcHMN4U", customer.id
114
+ end
64
115
  end
65
116
  end
66
117
  end
@@ -4,14 +4,13 @@ module Mollie
4
4
  class CustomerTest < Test::Unit::TestCase
5
5
  def test_setting_attributes
6
6
  attributes = {
7
- id: 'cst_vsKJpSsabw',
8
- mode: 'test',
9
- name: 'Customer A',
10
- email: 'customer@example.org',
11
- locale: 'nl_NL',
12
- metadata: { my_field: 'value' },
13
- recently_used_methods: 'creditcard',
14
- created_datetime: '2016-04-06T13:23:21.0Z'
7
+ id: 'cst_vsKJpSsabw',
8
+ mode: 'test',
9
+ name: 'Customer A',
10
+ email: 'customer@example.org',
11
+ locale: 'nl_NL',
12
+ metadata: { my_field: 'value' },
13
+ created_at: '2016-04-06T13:23:21.0Z'
15
14
  }
16
15
 
17
16
  customer = Customer.new(attributes)
@@ -21,108 +20,37 @@ module Mollie
21
20
  assert_equal 'Customer A', customer.name
22
21
  assert_equal 'customer@example.org', customer.email
23
22
  assert_equal 'nl_NL', customer.locale
24
- assert_equal ['creditcard'], customer.recently_used_methods
25
- assert_equal Time.parse('2016-04-06T13:23:21.0Z'), customer.created_datetime
23
+ assert_equal Time.parse('2016-04-06T13:23:21.0Z'), customer.created_at
26
24
 
27
25
  assert_equal 'value', customer.metadata.my_field
28
26
  assert_equal nil, customer.metadata.non_existing
29
27
  end
30
28
 
31
29
  def test_list_mandates
32
- stub_request(:get, "https://api.mollie.nl/v1/customers/cus-id/mandates?count=50&offset=0")
33
- .to_return(:status => 200, :body => %{{"data" : [{"id":"man-id", "customer_id":"cus-id"}]}}, :headers => {})
30
+ stub_request(:get, "https://api.mollie.com/v2/customers/cus-id/mandates")
31
+ .to_return(:status => 200, :body => %{{"_embedded" : { "mandates" : [{"id":"man-id", "customer_id":"cus-id"}]}} }, :headers => {})
34
32
 
35
- mandates = Customer.new(id: "cus-id").mandates.all
33
+ mandates = Customer.new(id: "cus-id").mandates
36
34
 
37
35
  assert_equal "man-id", mandates.first.id
38
36
  end
39
37
 
40
- def test_create_mandate
41
- stub_request(:post, "https://api.mollie.nl/v1/customers/cus-id/mandates")
42
- .with(body: %{{"method":"directdebit"}})
43
- .to_return(:status => 201, :body => %{{"id":"my-id", "method":"directdebit"}}, :headers => {})
44
-
45
- mandate = Customer.new(id: "cus-id").mandates.create(method: "directdebit")
46
-
47
- assert_equal "my-id", mandate.id
48
- assert_equal "directdebit", mandate.method
49
- end
50
-
51
- def test_delete_mandate
52
- stub_request(:delete, "https://api.mollie.nl/v1/customers/cus-id/mandates/man-id")
53
- .to_return(:status => 204, :headers => {})
54
-
55
- mandate = Customer.new(id: "cus-id").mandates.delete("man-id")
56
- assert_equal nil, mandate
57
- end
58
-
59
- def test_get_mandate
60
- stub_request(:get, "https://api.mollie.nl/v1/customers/cus-id/mandates/man-id")
61
- .to_return(:status => 200, :body => %{{"id":"man-id", "customer_id":"cus-id"}}, :headers => {})
62
-
63
- mandate = Customer.new(id: "cus-id").mandates.get("man-id")
64
-
65
- assert_equal "man-id", mandate.id
66
- assert_equal "cus-id", mandate.customer_id
67
- end
68
-
69
38
  def test_list_subscriptions
70
- stub_request(:get, "https://api.mollie.nl/v1/customers/cus-id/subscriptions?count=50&offset=0")
71
- .to_return(:status => 200, :body => %{{"data" : [{"id":"sub-id", "customer_id":"cus-id"}]}}, :headers => {})
39
+ stub_request(:get, "https://api.mollie.com/v2/customers/cus-id/subscriptions")
40
+ .to_return(:status => 200, :body => %{{"_embedded" : {"subscriptions" : [{"id":"sub-id", "customer_id":"cus-id"}]}} }, :headers => {})
72
41
 
73
- subscriptions = Customer.new(id: "cus-id").subscriptions.all
42
+ subscriptions = Customer.new(id: "cus-id").subscriptions
74
43
 
75
44
  assert_equal "sub-id", subscriptions.first.id
76
45
  end
77
46
 
78
- def test_create_subscription
79
- stub_request(:post, "https://api.mollie.nl/v1/customers/cus-id/subscriptions")
80
- .with(body: %{{"amount":1.95}})
81
- .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.95}}, :headers => {})
82
-
83
- subscription = Customer.new(id: "cus-id").subscriptions.create(amount: 1.95)
84
-
85
- assert_equal "my-id", subscription.id
86
- assert_equal BigDecimal.new("1.95"), subscription.amount
87
- end
88
-
89
- def test_delete_subscription
90
- stub_request(:delete, "https://api.mollie.nl/v1/customers/cus-id/subscriptions/sub-id")
91
- .to_return(:status => 204, :headers => {})
92
-
93
- subscription = Customer.new(id: "cus-id").subscriptions.delete("sub-id")
94
- assert_equal nil, subscription
95
- end
96
-
97
- def test_get_subscription
98
- stub_request(:get, "https://api.mollie.nl/v1/customers/cus-id/subscriptions/sub-id")
99
- .to_return(:status => 200, :body => %{{"id":"sub-id", "customer_id":"cus-id"}}, :headers => {})
100
-
101
- subscription = Customer.new(id: "cus-id").subscriptions.get("sub-id")
102
-
103
- assert_equal "sub-id", subscription.id
104
- assert_equal "cus-id", subscription.customer_id
105
- end
106
-
107
47
  def test_list_payments
108
- stub_request(:get, "https://api.mollie.nl/v1/customers/cus-id/payments?count=50&offset=0")
109
- .to_return(:status => 200, :body => %{{"data" : [{"id":"sub-id", "customer_id":"cus-id"}]}}, :headers => {})
48
+ stub_request(:get, "https://api.mollie.com/v2/customers/cus-id/payments")
49
+ .to_return(:status => 200, :body => %{{"_embedded" : { "payments" : [{"id":"sub-id", "customer_id":"cus-id"}]}}}, :headers => {})
110
50
 
111
- payments = Customer.new(id: "cus-id").payments.all
51
+ payments = Customer.new(id: "cus-id").payments
112
52
 
113
53
  assert_equal "sub-id", payments.first.id
114
54
  end
115
-
116
- def test_create_payment
117
- stub_request(:post, "https://api.mollie.nl/v1/customers/cus-id/payments")
118
- .with(body: %{{"amount":1.95}})
119
- .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.95}}, :headers => {})
120
-
121
- payment = Customer.new(id: "cus-id").payments.create(amount: 1.95)
122
-
123
- assert_kind_of Mollie::Payment, payment
124
- assert_equal "my-id", payment.id
125
- assert_equal BigDecimal.new("1.95"), payment.amount
126
- end
127
55
  end
128
56
  end