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.
- checksums.yaml +5 -5
- data/.travis.yml +0 -3
- data/CHANGELOG.md +6 -0
- data/README.md +63 -119
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/docs/migration_v2_2_x.md +67 -0
- data/docs/migration_v3_x.md +227 -0
- data/examples/chargebacks/get.rb +4 -0
- data/examples/chargebacks/list.rb +1 -0
- data/{website-docs → examples}/connect/authorize.rb +3 -2
- data/{website-docs → examples}/connect/tokens.rb +1 -1
- data/examples/customers/create-payment.rb +6 -0
- data/examples/customers/create.rb +5 -0
- data/examples/customers/delete.rb +1 -0
- data/examples/customers/get.rb +1 -0
- data/examples/customers/list-payments.rb +1 -0
- data/examples/customers/list.rb +1 -0
- data/examples/customers/update.rb +4 -0
- data/examples/invoices/get.rb +1 -0
- data/examples/invoices/list.rb +1 -0
- data/examples/mandates/create.rb +9 -0
- data/examples/mandates/delete.rb +1 -0
- data/examples/mandates/get.rb +1 -0
- data/examples/mandates/list.rb +1 -0
- data/examples/methods/get.rb +4 -0
- data/examples/methods/list.rb +4 -0
- data/examples/organisations/get-current.rb +1 -0
- data/examples/organisations/get.rb +1 -0
- data/examples/payments/create.rb +9 -0
- data/examples/payments/delete.rb +1 -0
- data/examples/payments/get-customer.rb +2 -0
- data/examples/payments/get-mandate.rb +2 -0
- data/examples/payments/get-settlement.rb +2 -0
- data/examples/payments/get-subscription.rb +2 -0
- data/examples/payments/get.rb +1 -0
- data/examples/payments/list.rb +1 -0
- data/examples/payments/webhook.rb +12 -0
- data/examples/permissions/get.rb +1 -0
- data/examples/permissions/list.rb +1 -0
- data/examples/profiles/create.rb +8 -0
- data/examples/profiles/delete.rb +1 -0
- data/examples/profiles/get.rb +1 -0
- data/examples/profiles/list-chargebacks.rb +2 -0
- data/examples/profiles/list-methods.rb +2 -0
- data/examples/profiles/list-payments.rb +2 -0
- data/examples/profiles/list-refunds.rb +2 -0
- data/examples/profiles/list.rb +1 -0
- data/examples/profiles/update.rb +5 -0
- data/examples/refunds/create.rb +5 -0
- data/examples/refunds/delete.rb +4 -0
- data/examples/refunds/get-payment.rb +2 -0
- data/examples/refunds/get.rb +4 -0
- data/examples/refunds/list.rb +1 -0
- data/examples/settlements/get.rb +1 -0
- data/examples/settlements/list-chargebacks.rb +1 -0
- data/examples/settlements/list-payments.rb +1 -0
- data/examples/settlements/list-refunds.rb +1 -0
- data/examples/settlements/list.rb +1 -0
- data/examples/settlements/next.rb +1 -0
- data/examples/settlements/open.rb +1 -0
- data/examples/subscriptions/create.rb +8 -0
- data/examples/subscriptions/delete.rb +4 -0
- data/examples/subscriptions/get.rb +4 -0
- data/examples/subscriptions/list.rb +1 -0
- data/examples/subscriptions/update.rb +5 -0
- data/lib/cacert.pem +168 -48
- data/lib/mollie.rb +1 -3
- data/lib/mollie/amount.rb +20 -0
- data/lib/mollie/base.rb +9 -8
- data/lib/mollie/chargeback.rb +25 -15
- data/lib/mollie/client.rb +33 -13
- data/lib/mollie/customer.rb +9 -14
- data/lib/mollie/customer/mandate.rb +17 -5
- data/lib/mollie/customer/subscription.rb +14 -15
- data/lib/mollie/exception.rb +15 -3
- data/lib/mollie/invoice.rb +30 -26
- data/lib/mollie/list.rb +27 -18
- data/lib/mollie/method.rb +17 -25
- data/lib/mollie/organization.rb +5 -11
- data/lib/mollie/payment.rb +89 -61
- data/lib/mollie/permission.rb +0 -1
- data/lib/mollie/profile.rb +18 -13
- data/lib/mollie/refund.rb +27 -7
- data/lib/mollie/settlement.rb +50 -9
- data/lib/mollie/util.rb +11 -0
- data/lib/mollie/version.rb +1 -1
- data/mollie-api-ruby.gemspec +0 -7
- data/test/mollie/amount_test.rb +30 -0
- data/test/mollie/base_test.rb +44 -44
- data/test/mollie/chargeback_test.rb +78 -17
- data/test/mollie/client_test.rb +29 -12
- data/test/mollie/customer/mandate_test.rb +85 -9
- data/test/mollie/customer/payment_test.rb +2 -2
- data/test/mollie/customer/subscription_test.rb +71 -20
- data/test/mollie/customer_test.rb +17 -89
- data/test/mollie/invoice_test.rb +40 -24
- data/test/mollie/list_test.rb +62 -18
- data/test/mollie/method_test.rb +2 -8
- data/test/mollie/organization_test.rb +28 -23
- data/test/mollie/payment/chargeback_test.rb +2 -3
- data/test/mollie/payment/refund_test.rb +2 -3
- data/test/mollie/payment_test.rb +272 -86
- data/test/mollie/permission_test.rb +0 -2
- data/test/mollie/profile_test.rb +129 -35
- data/test/mollie/refund_test.rb +90 -10
- data/test/mollie/settlement/chargeback_test.rb +2 -4
- data/test/mollie/settlement/payment_test.rb +2 -2
- data/test/mollie/settlement/refund_test.rb +2 -3
- data/test/mollie/settlement_test.rb +199 -98
- data/test/mollie/util_test.rb +31 -0
- metadata +96 -239
- data/examples/apis/api_docs.rb +0 -37
- data/examples/apis/chargebacks.rb +0 -17
- data/examples/apis/connect.rb +0 -58
- data/examples/apis/customers.rb +0 -116
- data/examples/apis/invoices.rb +0 -38
- data/examples/apis/issuers.rb +0 -35
- data/examples/apis/mandates.rb +0 -83
- data/examples/apis/methods.rb +0 -50
- data/examples/apis/organizations.rb +0 -16
- data/examples/apis/payments.rb +0 -174
- data/examples/apis/permissions.rb +0 -32
- data/examples/apis/profiles.rb +0 -126
- data/examples/apis/refunds.rb +0 -17
- data/examples/apis/settlements.rb +0 -84
- data/examples/apis/subscriptions.rb +0 -165
- data/examples/config.ru +0 -57
- data/examples/public/images/collapse.gif +0 -0
- data/examples/public/images/expand.gif +0 -0
- data/examples/public/images/explorer_icons.png +0 -0
- data/examples/public/images/favicon-16x16.png +0 -0
- data/examples/public/images/favicon-32x32.png +0 -0
- data/examples/public/images/favicon.ico +0 -0
- data/examples/public/images/logo_small.png +0 -0
- data/examples/public/images/pet_store_api.png +0 -0
- data/examples/public/images/throbber.gif +0 -0
- data/examples/public/images/wordnik_api.png +0 -0
- data/examples/public/index.html +0 -101
- data/examples/public/javascripts/lib/backbone-min.js +0 -1
- data/examples/public/javascripts/lib/es5-shim.js +0 -1
- data/examples/public/javascripts/lib/handlebars-4.0.5.js +0 -3
- data/examples/public/javascripts/lib/highlight.9.1.0.pack.js +0 -1
- data/examples/public/javascripts/lib/highlight.9.1.0.pack_extended.js +0 -1
- data/examples/public/javascripts/lib/jquery-1.8.0.min.js +0 -3
- data/examples/public/javascripts/lib/jquery.ba-bbq.min.js +0 -1
- data/examples/public/javascripts/lib/jquery.slideto.min.js +0 -1
- data/examples/public/javascripts/lib/jquery.wiggle.min.js +0 -1
- data/examples/public/javascripts/lib/js-yaml.min.js +0 -2
- data/examples/public/javascripts/lib/jsoneditor.min.js +0 -5
- data/examples/public/javascripts/lib/lodash.min.js +0 -2
- data/examples/public/javascripts/lib/marked.js +0 -1
- data/examples/public/javascripts/lib/object-assign-pollyfill.js +0 -1
- data/examples/public/javascripts/lib/sanitize-html.min.js +0 -4
- data/examples/public/javascripts/lib/swagger-oauth.js +0 -1
- data/examples/public/javascripts/swagger-ui.js +0 -25378
- data/examples/public/javascripts/swagger-ui.min.js +0 -15
- data/examples/public/javascripts/swagger_docs.js +0 -14
- data/examples/public/o2c.html +0 -20
- data/examples/public/stylesheets/reset.css +0 -1
- data/examples/public/stylesheets/screen.css +0 -1545
- data/examples/public/stylesheets/swagger_docs.css +0 -4
- data/examples/public/stylesheets/typography.css +0 -0
- data/lib/mollie/issuer.rb +0 -5
- data/lib/mollie/profile/api_key.rb +0 -19
- data/lib/mollie/relation.rb +0 -36
- data/test/mollie/issuer_test.rb +0 -19
- data/test/mollie/profile/apikey_test.rb +0 -31
- data/website-docs/chargebacks/list-all.rb +0 -12
- data/website-docs/customers/create-payment.rb +0 -13
- data/website-docs/customers/create.rb +0 -12
- data/website-docs/customers/delete.rb +0 -10
- data/website-docs/customers/get.rb +0 -10
- data/website-docs/customers/list-payments.rb +0 -10
- data/website-docs/customers/list.rb +0 -12
- data/website-docs/customers/update.rb +0 -11
- data/website-docs/invoices/get.rb +0 -10
- data/website-docs/invoices/list.rb +0 -12
- data/website-docs/issuers/get.rb +0 -10
- data/website-docs/issuers/list.rb +0 -12
- data/website-docs/mandates/create.rb +0 -16
- data/website-docs/mandates/delete.rb +0 -10
- data/website-docs/mandates/get.rb +0 -10
- data/website-docs/mandates/list.rb +0 -12
- data/website-docs/methods/get.rb +0 -10
- data/website-docs/methods/list.rb +0 -12
- data/website-docs/organisations/get.rb +0 -10
- data/website-docs/payments/create-refund.rb +0 -14
- data/website-docs/payments/create.rb +0 -16
- data/website-docs/payments/delete-refund.rb +0 -13
- data/website-docs/payments/delete.rb +0 -12
- data/website-docs/payments/get-chargeback.rb +0 -11
- data/website-docs/payments/get-refund.rb +0 -11
- data/website-docs/payments/get.rb +0 -10
- data/website-docs/payments/list-chargeback.rb +0 -13
- data/website-docs/payments/list-refunds.rb +0 -13
- data/website-docs/payments/list.rb +0 -12
- data/website-docs/payments/payment-webhook.rb +0 -21
- data/website-docs/permissions/get.rb +0 -10
- data/website-docs/permissions/list.rb +0 -12
- data/website-docs/profiles/create.rb +0 -15
- data/website-docs/profiles/delete.rb +0 -10
- data/website-docs/profiles/get-key.rb +0 -11
- data/website-docs/profiles/get.rb +0 -10
- data/website-docs/profiles/list-keys.rb +0 -13
- data/website-docs/profiles/list.rb +0 -12
- data/website-docs/profiles/reset-key.rb +0 -13
- data/website-docs/profiles/update.rb +0 -12
- data/website-docs/refunds/list.rb +0 -12
- data/website-docs/settlements/get.rb +0 -10
- data/website-docs/settlements/list-chargebacks.rb +0 -13
- data/website-docs/settlements/list-payments.rb +0 -13
- data/website-docs/settlements/list-refunds.rb +0 -13
- data/website-docs/settlements/list.rb +0 -12
- data/website-docs/settlements/next.rb +0 -9
- data/website-docs/settlements/open.rb +0 -9
- data/website-docs/subscriptions/create.rb +0 -14
- data/website-docs/subscriptions/delete.rb +0 -10
- data/website-docs/subscriptions/get.rb +0 -10
- 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
|
data/test/mollie/profile_test.rb
CHANGED
@@ -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: '
|
12
|
+
phone: '+31208202070',
|
13
13
|
category_code: 5399,
|
14
14
|
status: 'unverified',
|
15
|
-
review:
|
15
|
+
review: {
|
16
16
|
status: 'pending'
|
17
17
|
},
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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 '
|
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.
|
38
|
-
assert_equal
|
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
|
69
|
-
stub_request(:get, "https://api.mollie.
|
70
|
-
.to_return(:status => 200, :body => %{
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
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
|
79
|
-
stub_request(:
|
80
|
-
.to_return(:status => 200, :body => %{
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
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
|
89
|
-
stub_request(:get, "https://api.mollie.
|
90
|
-
.to_return(:status => 200, :body => %{
|
91
|
-
|
92
|
-
|
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
|
-
|
95
|
-
|
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
|
data/test/mollie/refund_test.rb
CHANGED
@@ -4,22 +4,26 @@ module Mollie
|
|
4
4
|
class RefundTest < Test::Unit::TestCase
|
5
5
|
def test_setting_attributes
|
6
6
|
attributes = {
|
7
|
-
id:
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
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.
|
13
|
-
.to_return(:status => 200, :body => %{{"
|
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.
|
13
|
-
.to_return(:status => 200, :body => %{{"
|
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.
|
13
|
-
.to_return(:status => 200, :body => %{{"
|
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:
|
8
|
-
reference:
|
9
|
-
|
10
|
-
amount:
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
-
|
70
|
-
|
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.
|
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.
|
97
|
-
assert_equal nil, settlement.periods[:'2015'][:'11'].revenue[0].
|
98
|
-
assert_equal 86.
|
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.
|
104
|
-
assert_equal nil, settlement.periods[:'2015'][:'11'].revenue[1].
|
105
|
-
assert_equal
|
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.
|
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.
|
113
|
-
assert_equal 0.
|
114
|
-
assert_equal 2.
|
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.
|
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.
|
122
|
-
assert_equal 0.
|
123
|
-
assert_equal 0.
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
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.
|
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.
|
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
|