mollie-api-ruby 2.2.1 → 3.1.0

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 (197) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +37 -8
  4. data/examples/apis/api_docs.rb +1 -1
  5. data/examples/apis/chargebacks.rb +17 -0
  6. data/examples/apis/connect.rb +1 -1
  7. data/examples/apis/customers.rb +7 -6
  8. data/examples/apis/invoices.rb +2 -2
  9. data/examples/apis/issuers.rb +2 -2
  10. data/examples/apis/mandates.rb +5 -5
  11. data/examples/apis/methods.rb +2 -2
  12. data/examples/apis/organizations.rb +1 -1
  13. data/examples/apis/payments.rb +43 -9
  14. data/examples/apis/permissions.rb +2 -2
  15. data/examples/apis/profiles.rb +7 -7
  16. data/examples/apis/refunds.rb +1 -1
  17. data/examples/apis/settlements.rb +5 -5
  18. data/examples/apis/subscriptions.rb +7 -7
  19. data/examples/config.ru +6 -7
  20. data/lib/{mollie/api/cacert.pem → cacert.pem} +0 -0
  21. data/lib/mollie-api-ruby.rb +1 -0
  22. data/lib/mollie.rb +39 -0
  23. data/lib/mollie/base.rb +91 -0
  24. data/lib/mollie/chargeback.rb +36 -0
  25. data/lib/mollie/client.rb +125 -0
  26. data/lib/mollie/customer.rb +36 -0
  27. data/lib/mollie/customer/mandate.rb +33 -0
  28. data/lib/mollie/customer/payment.rb +6 -0
  29. data/lib/mollie/customer/subscription.rb +65 -0
  30. data/lib/mollie/exception.rb +8 -0
  31. data/lib/mollie/invoice.rb +66 -0
  32. data/lib/mollie/issuer.rb +5 -0
  33. data/lib/mollie/list.rb +40 -0
  34. data/lib/mollie/method.rb +38 -0
  35. data/lib/mollie/organization.rb +24 -0
  36. data/lib/mollie/payment.rb +142 -0
  37. data/lib/mollie/payment/chargeback.rb +6 -0
  38. data/lib/mollie/payment/refund.rb +6 -0
  39. data/lib/mollie/permission.rb +26 -0
  40. data/lib/mollie/profile.rb +78 -0
  41. data/lib/mollie/profile/api_key.rb +19 -0
  42. data/lib/mollie/refund.rb +42 -0
  43. data/lib/mollie/relation.rb +36 -0
  44. data/lib/mollie/settlement.rb +36 -0
  45. data/lib/mollie/settlement/chargeback.rb +6 -0
  46. data/lib/mollie/settlement/payment.rb +6 -0
  47. data/lib/mollie/settlement/refund.rb +6 -0
  48. data/lib/mollie/util.rb +57 -0
  49. data/lib/mollie/version.rb +3 -0
  50. data/mollie.gemspec +2 -2
  51. data/test/helper.rb +5 -1
  52. data/test/mollie/base_test.rb +182 -0
  53. data/test/mollie/chargeback_test.rb +35 -0
  54. data/test/mollie/client_test.rb +122 -0
  55. data/test/mollie/customer/mandate_test.rb +43 -0
  56. data/test/mollie/customer/payment_test.rb +23 -0
  57. data/test/mollie/customer/subscription_test.rb +66 -0
  58. data/test/mollie/customer_test.rb +128 -0
  59. data/test/mollie/invoice_test.rb +55 -0
  60. data/test/mollie/issuer_test.rb +19 -0
  61. data/test/mollie/list_test.rb +40 -0
  62. data/test/mollie/method_test.rb +29 -0
  63. data/test/mollie/organization_test.rb +41 -0
  64. data/test/mollie/payment/chargeback_test.rb +22 -0
  65. data/test/mollie/payment/refund_test.rb +22 -0
  66. data/test/mollie/payment_test.rb +161 -0
  67. data/test/mollie/permission_test.rb +21 -0
  68. data/test/mollie/profile/apikey_test.rb +31 -0
  69. data/test/mollie/profile_test.rb +98 -0
  70. data/test/mollie/refund_test.rb +40 -0
  71. data/test/mollie/settlement/chargeback_test.rb +22 -0
  72. data/test/mollie/settlement/payment_test.rb +22 -0
  73. data/test/mollie/settlement/refund_test.rb +22 -0
  74. data/test/mollie/settlement_test.rb +156 -0
  75. data/website-docs/chargebacks/list-all.rb +12 -0
  76. data/website-docs/connect/authorize.rb +15 -0
  77. data/website-docs/connect/tokens.rb +14 -0
  78. data/website-docs/customers/create-payment.rb +13 -0
  79. data/website-docs/customers/create.rb +12 -0
  80. data/website-docs/customers/delete.rb +10 -0
  81. data/website-docs/customers/get.rb +10 -0
  82. data/website-docs/customers/list-payments.rb +10 -0
  83. data/website-docs/customers/list.rb +12 -0
  84. data/website-docs/customers/update.rb +11 -0
  85. data/website-docs/invoices/get.rb +10 -0
  86. data/website-docs/invoices/list.rb +12 -0
  87. data/website-docs/issuers/get.rb +10 -0
  88. data/website-docs/issuers/list.rb +12 -0
  89. data/website-docs/mandates/create.rb +16 -0
  90. data/website-docs/mandates/delete.rb +10 -0
  91. data/website-docs/mandates/get.rb +10 -0
  92. data/website-docs/mandates/list.rb +12 -0
  93. data/website-docs/methods/get.rb +10 -0
  94. data/website-docs/methods/list.rb +12 -0
  95. data/website-docs/organisations/get.rb +10 -0
  96. data/website-docs/payments/create-refund.rb +14 -0
  97. data/website-docs/payments/create.rb +16 -0
  98. data/website-docs/payments/delete-refund.rb +13 -0
  99. data/website-docs/payments/delete.rb +12 -0
  100. data/website-docs/payments/get-chargeback.rb +11 -0
  101. data/website-docs/payments/get-refund.rb +11 -0
  102. data/website-docs/payments/get.rb +10 -0
  103. data/website-docs/payments/list-chargeback.rb +13 -0
  104. data/website-docs/payments/list-refunds.rb +13 -0
  105. data/website-docs/payments/list.rb +12 -0
  106. data/website-docs/payments/payment-webhook.rb +21 -0
  107. data/website-docs/permissions/get.rb +10 -0
  108. data/website-docs/permissions/list.rb +12 -0
  109. data/website-docs/profiles/create.rb +15 -0
  110. data/website-docs/profiles/delete.rb +10 -0
  111. data/website-docs/profiles/get-key.rb +11 -0
  112. data/website-docs/profiles/get.rb +10 -0
  113. data/website-docs/profiles/list-keys.rb +13 -0
  114. data/website-docs/profiles/list.rb +12 -0
  115. data/website-docs/profiles/reset-key.rb +13 -0
  116. data/website-docs/profiles/update.rb +12 -0
  117. data/website-docs/refunds/list.rb +12 -0
  118. data/website-docs/settlements/get.rb +10 -0
  119. data/website-docs/settlements/list-chargebacks.rb +13 -0
  120. data/website-docs/settlements/list-payments.rb +13 -0
  121. data/website-docs/settlements/list-refunds.rb +13 -0
  122. data/website-docs/settlements/list.rb +12 -0
  123. data/website-docs/settlements/next.rb +9 -0
  124. data/website-docs/settlements/open.rb +9 -0
  125. data/website-docs/subscriptions/create.rb +14 -0
  126. data/website-docs/subscriptions/delete.rb +10 -0
  127. data/website-docs/subscriptions/get.rb +10 -0
  128. data/website-docs/subscriptions/list.rb +12 -0
  129. metadata +134 -104
  130. data/lib/mollie/api/client.rb +0 -161
  131. data/lib/mollie/api/client/version.rb +0 -7
  132. data/lib/mollie/api/exception.rb +0 -10
  133. data/lib/mollie/api/object/base.rb +0 -18
  134. data/lib/mollie/api/object/customer.rb +0 -28
  135. data/lib/mollie/api/object/customer/mandate.rb +0 -37
  136. data/lib/mollie/api/object/customer/subscription.rb +0 -69
  137. data/lib/mollie/api/object/invoice.rb +0 -70
  138. data/lib/mollie/api/object/issuer.rb +0 -9
  139. data/lib/mollie/api/object/list.rb +0 -44
  140. data/lib/mollie/api/object/method.rb +0 -42
  141. data/lib/mollie/api/object/organization.rb +0 -28
  142. data/lib/mollie/api/object/payment.rb +0 -137
  143. data/lib/mollie/api/object/payment/refund.rb +0 -47
  144. data/lib/mollie/api/object/permission.rb +0 -12
  145. data/lib/mollie/api/object/profile.rb +0 -78
  146. data/lib/mollie/api/object/profile/apikey.rb +0 -23
  147. data/lib/mollie/api/object/settlement.rb +0 -32
  148. data/lib/mollie/api/resource/base.rb +0 -53
  149. data/lib/mollie/api/resource/customers.rb +0 -11
  150. data/lib/mollie/api/resource/customers/mandates.rb +0 -27
  151. data/lib/mollie/api/resource/customers/payments.rb +0 -27
  152. data/lib/mollie/api/resource/customers/subscriptions.rb +0 -27
  153. data/lib/mollie/api/resource/invoices.rb +0 -11
  154. data/lib/mollie/api/resource/issuers.rb +0 -11
  155. data/lib/mollie/api/resource/methods.rb +0 -11
  156. data/lib/mollie/api/resource/organizations.rb +0 -11
  157. data/lib/mollie/api/resource/payments.rb +0 -11
  158. data/lib/mollie/api/resource/payments/refunds.rb +0 -27
  159. data/lib/mollie/api/resource/permissions.rb +0 -31
  160. data/lib/mollie/api/resource/profiles.rb +0 -11
  161. data/lib/mollie/api/resource/profiles/apikeys.rb +0 -33
  162. data/lib/mollie/api/resource/refunds.rb +0 -11
  163. data/lib/mollie/api/resource/settlements.rb +0 -19
  164. data/lib/mollie/api/resource/settlements/payments.rb +0 -27
  165. data/lib/mollie/api/util.rb +0 -53
  166. data/test/mollie/api/client_test.rb +0 -111
  167. data/test/mollie/api/object/base_test.rb +0 -21
  168. data/test/mollie/api/object/customer/mandate_test.rb +0 -47
  169. data/test/mollie/api/object/customer/subscription_test.rb +0 -70
  170. data/test/mollie/api/object/customer_test.rb +0 -35
  171. data/test/mollie/api/object/invoice_test.rb +0 -59
  172. data/test/mollie/api/object/issuer_test.rb +0 -23
  173. data/test/mollie/api/object/list_test.rb +0 -44
  174. data/test/mollie/api/object/method_test.rb +0 -33
  175. data/test/mollie/api/object/organization_test.rb +0 -45
  176. data/test/mollie/api/object/payment/refund_test.rb +0 -46
  177. data/test/mollie/api/object/payment_test.rb +0 -106
  178. data/test/mollie/api/object/permission_test.rb +0 -25
  179. data/test/mollie/api/object/profile/apikey_test.rb +0 -35
  180. data/test/mollie/api/object/profile_test.rb +0 -72
  181. data/test/mollie/api/object/settlement_test.rb +0 -140
  182. data/test/mollie/api/resource/base_test.rb +0 -83
  183. data/test/mollie/api/resource/customers/mandates_test.rb +0 -23
  184. data/test/mollie/api/resource/customers/payments_test.rb +0 -23
  185. data/test/mollie/api/resource/customers/subscriptions_test.rb +0 -23
  186. data/test/mollie/api/resource/customers_test.rb +0 -13
  187. data/test/mollie/api/resource/invoices_test.rb +0 -13
  188. data/test/mollie/api/resource/issuers_test.rb +0 -13
  189. data/test/mollie/api/resource/methods_test.rb +0 -13
  190. data/test/mollie/api/resource/organizations_test.rb +0 -13
  191. data/test/mollie/api/resource/payments/refunds_test.rb +0 -23
  192. data/test/mollie/api/resource/payments_test.rb +0 -13
  193. data/test/mollie/api/resource/permissions_test.rb +0 -13
  194. data/test/mollie/api/resource/profiles/apikeys_test.rb +0 -23
  195. data/test/mollie/api/resource/profiles_test.rb +0 -13
  196. data/test/mollie/api/resource/settlements_test.rb +0 -13
  197. data/test/mollie/api/util_test.rb +0 -47
@@ -0,0 +1,6 @@
1
+ module Mollie
2
+ class Payment
3
+ class Refund < Mollie::Refund
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,26 @@
1
+ module Mollie
2
+ class Permission < Base
3
+ AVAILABLE = %w(
4
+ payments.read
5
+ payments.write
6
+ refunds.read
7
+ refunds.write
8
+ customers.read
9
+ customers.write
10
+ mandates.read
11
+ mandates.write
12
+ subscriptions.read
13
+ subscriptions.write
14
+ profiles.read
15
+ profiles.write
16
+ invoices.read
17
+ settlements.read
18
+ organizations.read
19
+ organizations.write)
20
+
21
+ attr_accessor :id,
22
+ :description,
23
+ :warning,
24
+ :granted
25
+ end
26
+ end
@@ -0,0 +1,78 @@
1
+ module Mollie
2
+ class Profile < Base
3
+ CATEGORY_CODE_GENERAL_MERCHANDISE = 5399
4
+ CATEGORY_CODE_ELECTRONICS_COMPUTERS_AND_SOFTWARE = 5732
5
+ CATEGORY_CODE_TRAVEL_RENTAL_AND_TRANSPORTATION = 4121
6
+ CATEGORY_CODE_FINANCIAL_SERVICES = 6012
7
+ CATEGORY_CODE_FOOD_AND_DRINKS = 5499
8
+ CATEGORY_CODE_EVENTS_FESTIVALS_AND_RECREATION = 7999
9
+ CATEGORY_CODE_BOOKS_MAGAZINES_AND_NEWSPAPERS = 5192
10
+ CATEGORY_CODE_PERSONAL_SERVICES = 7299
11
+ CATEGORY_CODE_CHARITY_AND_DONATIONS = 8398
12
+ CATEGORY_CODE_OTHER = 0
13
+
14
+ STATUS_UNVERIFIED = "unverified"
15
+ STATUS_VERIFIED = "verified"
16
+ STATUS_BLOCKED = "blocked"
17
+
18
+ REVIEW_STATUS_PENDING = "pending"
19
+ REVIEW_STATUS_REJECTED = "rejected"
20
+
21
+ attr_accessor :id,
22
+ :mode,
23
+ :name,
24
+ :website,
25
+ :email,
26
+ :phone,
27
+ :category_code,
28
+ :status,
29
+ :review,
30
+ :created_datetime,
31
+ :updated_datetime,
32
+ :links
33
+
34
+ def unverified?
35
+ status == STATUS_UNVERIFIED
36
+ end
37
+
38
+ def verified?
39
+ status == STATUS_VERIFIED
40
+ end
41
+
42
+ def blocked?
43
+ status == STATUS_BLOCKED
44
+ end
45
+
46
+ def review=(review)
47
+ @review = OpenStruct.new(review) if review.is_a?(Hash)
48
+ end
49
+
50
+ def review_pending?
51
+ @review && @review.status == REVIEW_STATUS_PENDING
52
+ end
53
+
54
+ def review_rejected?
55
+ @review && @review.status == REVIEW_STATUS_REJECTED
56
+ end
57
+
58
+ def created_datetime=(created_datetime)
59
+ @created_datetime = Time.parse(created_datetime.to_s) rescue nil
60
+ end
61
+
62
+ def updated_datetime=(updated_datetime)
63
+ @updated_datetime = Time.parse(updated_datetime.to_s) rescue nil
64
+ end
65
+
66
+ def apikeys_url
67
+ links && links['apikeys']
68
+ end
69
+
70
+ def checkout_preview_url
71
+ links && links['checkout_preview_url']
72
+ end
73
+
74
+ def apikeys
75
+ Relation.new(self, Profile::ApiKey)
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,19 @@
1
+ module Mollie
2
+ class Profile
3
+ class ApiKey < Base
4
+ attr_accessor :id, :key, :created_datetime
5
+
6
+ def testmode?
7
+ id == Mollie::Client::MODE_TEST
8
+ end
9
+
10
+ def livemode?
11
+ id == Mollie::Client::MODE_LIVE
12
+ end
13
+
14
+ def created_datetime=(created_datetime)
15
+ @created_datetime = Time.parse(created_datetime)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ module Mollie
2
+ class Refund < Base
3
+ STATUS_QUEUED = "queued"
4
+ STATUS_PENDING = "pending"
5
+ STATUS_PROCESSING = "processing"
6
+ STATUS_REFUNDED = "refunded"
7
+
8
+ attr_accessor :id,
9
+ :payment,
10
+ :amount,
11
+ :status,
12
+ :refunded_datetime
13
+
14
+ def queued?
15
+ status == STATUS_QUEUED
16
+ end
17
+
18
+ def pending?
19
+ status == STATUS_PENDING
20
+ end
21
+
22
+ def processing?
23
+ status == STATUS_PROCESSING
24
+ end
25
+
26
+ def refunded?
27
+ status == STATUS_REFUNDED
28
+ end
29
+
30
+ def refunded_datetime=(refunded_datetime)
31
+ @refunded_datetime = Time.parse(refunded_datetime) rescue nil
32
+ end
33
+
34
+ def amount=(amount)
35
+ @amount = BigDecimal.new(amount.to_s) if amount
36
+ end
37
+
38
+ def payment=(payment)
39
+ @payment = Payment.new(payment)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,36 @@
1
+ module Mollie
2
+ class Relation
3
+ def initialize(parent, klass)
4
+ @parent = parent
5
+ @klass = klass
6
+ end
7
+
8
+ def all(*args)
9
+ options = args.last.is_a?(Hash) ? args.pop : {}
10
+ args.push(enhance(options))
11
+ @klass.all(*args)
12
+ end
13
+
14
+ def get(id, options = {})
15
+ @klass.get(id, enhance(options))
16
+ end
17
+
18
+ def update(id, data = {})
19
+ @klass.update(id, enhance(data))
20
+ end
21
+
22
+ def create(data = {})
23
+ @klass.create(enhance(data))
24
+ end
25
+
26
+ def delete(id, options = {})
27
+ @klass.delete(id, enhance(options))
28
+ end
29
+
30
+ private
31
+
32
+ def enhance(data = {})
33
+ data.merge(@parent.class.id_param => @parent.id)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ module Mollie
2
+ class Settlement < Base
3
+ attr_accessor :id,
4
+ :reference,
5
+ :settled_datetime,
6
+ :amount,
7
+ :periods,
8
+ :payment_ids,
9
+ :refund_ids,
10
+ :links
11
+
12
+ def self.open(options = {})
13
+ get("open", options)
14
+ end
15
+
16
+ def self.next(options = {})
17
+ get("next", options)
18
+ end
19
+
20
+ def settled_datetime=(settled_datetime)
21
+ @settled_datetime = Time.parse(settled_datetime.to_s) rescue nil
22
+ end
23
+
24
+ def amount=(amount)
25
+ @amount = BigDecimal.new(amount.to_s) if amount
26
+ end
27
+
28
+ def periods=(periods)
29
+ @periods = Util.nested_openstruct(periods) if periods.is_a?(Hash)
30
+ end
31
+
32
+ def payments
33
+ links && links['payments']
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,6 @@
1
+ module Mollie
2
+ class Settlement
3
+ class Chargeback < Mollie::Chargeback
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Mollie
2
+ class Settlement
3
+ class Payment < Mollie::Payment
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Mollie
2
+ class Settlement
3
+ class Refund < Mollie::Refund
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,57 @@
1
+ module Mollie
2
+ module Util
3
+ extend self
4
+
5
+ def nested_underscore_keys(obj)
6
+ if obj.is_a?(Hash)
7
+ obj.each_with_object({}) do |(key, value), underscored|
8
+ underscored[underscore(key)] = nested_underscore_keys(value)
9
+ end
10
+ elsif obj.is_a?(Array)
11
+ obj.map { |v| nested_underscore_keys(v) }
12
+ else
13
+ obj
14
+ end
15
+ end
16
+
17
+ def camelize_keys(hash)
18
+ hash.each_with_object({}) do |(key, value), camelized|
19
+ camelized[camelize(key)] = value
20
+ end
21
+ end
22
+
23
+ def underscore(string)
24
+ string.to_s.gsub(/::/, '/').
25
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
26
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
27
+ tr("-", "_").
28
+ downcase.to_s
29
+ end
30
+
31
+ # Dirty pluralize function, but currently holds for all required plurals
32
+ # Not worth to include another library like ActiveSupport
33
+ def pluralize(string)
34
+ "#{string}s"
35
+ end
36
+
37
+ def camelize(term)
38
+ string = term.to_s
39
+ string = string.sub(/^(?:(?=\b|[A-Z_])|\w)/) { |match| match.downcase }
40
+ string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }
41
+ string.gsub!('/'.freeze, '::'.freeze)
42
+ string
43
+ end
44
+
45
+ def nested_openstruct(obj)
46
+ if obj.is_a?(Hash)
47
+ obj.each_with_object(OpenStruct.new) do |(key, value), openstructed|
48
+ openstructed[key] = nested_openstruct(value)
49
+ end
50
+ elsif obj.is_a?(Array)
51
+ obj.map { |v| nested_openstruct(v) }
52
+ else
53
+ obj
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,3 @@
1
+ module Mollie
2
+ VERSION = "3.1.0"
3
+ end
@@ -1,10 +1,10 @@
1
1
  $:.push File.expand_path('../lib', __FILE__)
2
2
 
3
- require 'mollie/api/client/version'
3
+ require 'mollie/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'mollie-api-ruby'
7
- s.version = Mollie::API::Client::VERSION
7
+ s.version = Mollie::VERSION
8
8
  s.summary = 'Official Mollie API Client for Ruby'
9
9
  s.description = %(Accepting iDEAL, Bancontact/Mister Cash, SOFORT Banking,
10
10
  Creditcard, SEPA Bank transfer, SEPA Direct debit, Bitcoin,
@@ -1,4 +1,8 @@
1
1
  require 'test/unit'
2
2
  require 'webmock/test_unit'
3
3
 
4
- require 'mollie/api/client'
4
+ require 'mollie'
5
+
6
+ Mollie::Client.configure do |config|
7
+ config.api_key = "test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"
8
+ end
@@ -0,0 +1,182 @@
1
+ require 'helper'
2
+
3
+ module Mollie
4
+ class TestObject < Base
5
+ attr_accessor :id, :amount, :my_field
6
+
7
+ class NestedObject < Base
8
+ attr_accessor :id, :testobject_id, :amount
9
+ end
10
+ end
11
+
12
+ class BaseTest < Test::Unit::TestCase
13
+ def test_resource_name
14
+ assert_equal "testobjects", TestObject.resource_name
15
+ end
16
+
17
+ def test_nested_resource_name
18
+ assert_equal "testobjects/object-id/nestedobjects", TestObject::NestedObject.resource_name("object-id")
19
+ end
20
+
21
+ def test_setting_attributes
22
+ attributes = { my_field: "my value", extra_field: "extra" }
23
+ object = TestObject.new(attributes)
24
+
25
+ assert_equal "my value", object.my_field
26
+ assert_equal attributes, object.attributes
27
+ end
28
+
29
+ def test_get
30
+ stub_request(:get, "https://api.mollie.nl/v1/testobjects/my-id")
31
+ .to_return(:status => 200, :body => %{{"id":"my-id"}}, :headers => {})
32
+
33
+ resource = TestObject.get("my-id")
34
+
35
+ assert_equal "my-id", resource.id
36
+ end
37
+
38
+ def test_nested_get
39
+ stub_request(:get, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
40
+ .to_return(:status => 200, :body => %{{"id":"my-id", "testobject_id":"object-id"}}, :headers => {})
41
+
42
+ resource = TestObject::NestedObject.get("my-id", testobject_id: 'object-id')
43
+
44
+ assert_equal "my-id", resource.id
45
+ assert_equal "object-id", resource.testobject_id
46
+ end
47
+
48
+ def test_create
49
+ stub_request(:post, "https://api.mollie.nl/v1/testobjects")
50
+ .with(body: %{{"amount":1.95}})
51
+ .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.00}}, :headers => {})
52
+
53
+ resource = TestObject.create(amount: 1.95)
54
+
55
+ assert_equal "my-id", resource.id
56
+ assert_equal BigDecimal.new("1.00"), resource.amount
57
+ end
58
+
59
+ def test_nested_create
60
+ stub_request(:post, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects")
61
+ .with(body: %{{"amount":1.95}})
62
+ .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "amount":1.00}}, :headers => {})
63
+
64
+ resource = TestObject::NestedObject.create(amount: 1.95, testobject_id: "object-id")
65
+
66
+ assert_equal "my-id", resource.id
67
+ assert_equal "object-id", resource.testobject_id
68
+ assert_equal BigDecimal.new("1.00"), resource.amount
69
+ end
70
+
71
+ def test_update
72
+ stub_request(:post, "https://api.mollie.nl/v1/testobjects/my-id")
73
+ .with(body: %{{"amount":1.95}})
74
+ .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.00}}, :headers => {})
75
+
76
+ resource = TestObject.update("my-id", amount: 1.95)
77
+
78
+ assert_equal "my-id", resource.id
79
+ assert_equal BigDecimal.new("1.00"), resource.amount
80
+ end
81
+
82
+ def test_update_instance
83
+ stub_request(:post, "https://api.mollie.nl/v1/testobjects/my-id")
84
+ .with(body: %{{"amount":1.95}})
85
+ .to_return(:status => 201, :body => %{{"id":"my-id", "amount":1.00}}, :headers => {})
86
+
87
+ resource = TestObject.new(id: "my-id")
88
+ resource.update(amount: 1.95)
89
+
90
+ assert_equal "my-id", resource.id
91
+ assert_equal BigDecimal.new("1.00"), resource.amount
92
+ end
93
+
94
+ def test_nested_update
95
+ stub_request(:post, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
96
+ .with(body: %{{"amount":1.95}})
97
+ .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "amount":1.00}}, :headers => {})
98
+
99
+ resource = TestObject::NestedObject.update("my-id", amount: 1.95, testobject_id: "object-id")
100
+
101
+ assert_equal "my-id", resource.id
102
+ assert_equal "object-id", resource.testobject_id
103
+ assert_equal BigDecimal.new("1.00"), resource.amount
104
+ end
105
+
106
+ def test_nested_update_instance
107
+ stub_request(:post, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
108
+ .with(body: %{{"amount":1.95}})
109
+ .to_return(:status => 201, :body => %{{"id":"my-id", "testobject_id":"object-id", "amount":1.00}}, :headers => {})
110
+
111
+ resource = TestObject::NestedObject.new(id: "my-id", testobject_id: "object-id")
112
+ resource.update(amount: 1.95)
113
+
114
+ assert_equal "my-id", resource.id
115
+ assert_equal "object-id", resource.testobject_id
116
+ assert_equal BigDecimal.new("1.00"), resource.amount
117
+ end
118
+
119
+ def test_delete
120
+ stub_request(:delete, "https://api.mollie.nl/v1/testobjects/my-id")
121
+ .to_return(:status => 204, :headers => {})
122
+
123
+ resource = TestObject.delete("my-id")
124
+
125
+ assert_equal nil, resource
126
+ end
127
+
128
+ def test_delete_instance
129
+ stub_request(:delete, "https://api.mollie.nl/v1/testobjects/my-id")
130
+ .to_return(:status => 204, :headers => {})
131
+
132
+ resource = TestObject.new(id: "my-id")
133
+
134
+ assert_equal nil, resource.delete
135
+ end
136
+
137
+ def test_nested_delete
138
+ stub_request(:delete, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
139
+ .to_return(:status => 204, :headers => {})
140
+
141
+ resource = TestObject::NestedObject.delete("my-id", testobject_id: "object-id")
142
+
143
+ assert_equal nil, resource
144
+ end
145
+
146
+ def test_nested_delete_instance
147
+ stub_request(:delete, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects/my-id")
148
+ .to_return(:status => 204, :headers => {})
149
+
150
+ resource = TestObject::NestedObject.new(id: "my-id", testobject_id: "object-id")
151
+
152
+ assert_equal nil, resource.delete
153
+ end
154
+
155
+ def test_all
156
+ stub_request(:get, "https://api.mollie.nl/v1/testobjects?count=50&offset=0")
157
+ .to_return(:status => 200, :body => %{{"data":[{"id":"my-id"}]}}, :headers => {})
158
+
159
+ resource = TestObject.all
160
+
161
+ assert_equal "my-id", resource.first.id
162
+ end
163
+
164
+ def test_nested_all
165
+ stub_request(:get, "https://api.mollie.nl/v1/nestedobjects?count=50&offset=0")
166
+ .to_return(:status => 200, :body => %{{"data":[{"id":"my-id"}]}}, :headers => {})
167
+
168
+ resource = TestObject::NestedObject.all
169
+
170
+ assert_equal "my-id", resource.first.id
171
+ end
172
+
173
+ def test_nested_all_scoped
174
+ stub_request(:get, "https://api.mollie.nl/v1/testobjects/object-id/nestedobjects?count=50&offset=0")
175
+ .to_return(:status => 200, :body => %{{"data":[{"id":"my-id"}]}}, :headers => {})
176
+
177
+ resource = TestObject::NestedObject.all(testobject_id: 'object-id')
178
+
179
+ assert_equal "my-id", resource.first.id
180
+ end
181
+ end
182
+ end