stripe 3.3.2 → 3.4.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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +20 -0
  4. data/.rubocop_todo.yml +62 -0
  5. data/.travis.yml +1 -1
  6. data/Gemfile +19 -12
  7. data/History.txt +10 -0
  8. data/README.md +5 -1
  9. data/Rakefile +8 -5
  10. data/VERSION +1 -1
  11. data/bin/stripe-console +2 -2
  12. data/lib/stripe.rb +72 -74
  13. data/lib/stripe/account.rb +15 -17
  14. data/lib/stripe/alipay_account.rb +10 -7
  15. data/lib/stripe/api_operations/create.rb +1 -1
  16. data/lib/stripe/api_operations/delete.rb +1 -1
  17. data/lib/stripe/api_operations/list.rb +2 -2
  18. data/lib/stripe/api_operations/request.rb +5 -12
  19. data/lib/stripe/api_operations/save.rb +6 -6
  20. data/lib/stripe/api_resource.rb +7 -9
  21. data/lib/stripe/apple_pay_domain.rb +2 -2
  22. data/lib/stripe/application_fee.rb +5 -5
  23. data/lib/stripe/application_fee_refund.rb +5 -5
  24. data/lib/stripe/balance.rb +1 -1
  25. data/lib/stripe/balance_transaction.rb +2 -2
  26. data/lib/stripe/bank_account.rb +7 -7
  27. data/lib/stripe/bitcoin_receiver.rb +4 -2
  28. data/lib/stripe/bitcoin_transaction.rb +3 -1
  29. data/lib/stripe/card.rb +5 -5
  30. data/lib/stripe/charge.rb +18 -18
  31. data/lib/stripe/country_spec.rb +2 -2
  32. data/lib/stripe/coupon.rb +1 -1
  33. data/lib/stripe/customer.rb +23 -23
  34. data/lib/stripe/dispute.rb +3 -3
  35. data/lib/stripe/ephemeral_key.rb +4 -4
  36. data/lib/stripe/errors.rb +4 -4
  37. data/lib/stripe/event.rb +1 -1
  38. data/lib/stripe/file_upload.rb +5 -5
  39. data/lib/stripe/invoice.rb +7 -7
  40. data/lib/stripe/invoice_item.rb +1 -1
  41. data/lib/stripe/invoice_line_item.rb +1 -1
  42. data/lib/stripe/list_object.rb +14 -18
  43. data/lib/stripe/login_link.rb +3 -3
  44. data/lib/stripe/oauth.rb +15 -13
  45. data/lib/stripe/order.rb +5 -5
  46. data/lib/stripe/order_return.rb +1 -1
  47. data/lib/stripe/payout.rb +3 -3
  48. data/lib/stripe/plan.rb +1 -1
  49. data/lib/stripe/product.rb +1 -1
  50. data/lib/stripe/recipient.rb +3 -2
  51. data/lib/stripe/recipient_transfer.rb +1 -2
  52. data/lib/stripe/refund.rb +1 -1
  53. data/lib/stripe/reversal.rb +5 -5
  54. data/lib/stripe/singleton_api_resource.rb +3 -3
  55. data/lib/stripe/sku.rb +1 -1
  56. data/lib/stripe/source.rb +13 -10
  57. data/lib/stripe/stripe_client.rb +149 -169
  58. data/lib/stripe/stripe_object.rb +77 -76
  59. data/lib/stripe/subscription.rb +5 -5
  60. data/lib/stripe/subscription_item.rb +2 -2
  61. data/lib/stripe/three_d_secure.rb +1 -1
  62. data/lib/stripe/token.rb +1 -1
  63. data/lib/stripe/transfer.rb +3 -3
  64. data/lib/stripe/util.rb +77 -62
  65. data/lib/stripe/version.rb +1 -1
  66. data/lib/stripe/webhook.rb +14 -10
  67. data/stripe.gemspec +14 -14
  68. data/test/stripe/account_test.rb +69 -81
  69. data/test/stripe/alipay_account_test.rb +19 -1
  70. data/test/stripe/api_operations_test.rb +7 -7
  71. data/test/stripe/api_resource_test.rb +224 -260
  72. data/test/stripe/apple_pay_domain_test.rb +8 -8
  73. data/test/stripe/application_fee_refund_test.rb +8 -8
  74. data/test/stripe/application_fee_test.rb +3 -3
  75. data/test/stripe/balance_test.rb +2 -2
  76. data/test/stripe/bank_account_test.rb +9 -11
  77. data/test/stripe/charge_test.rb +11 -11
  78. data/test/stripe/country_spec_test.rb +4 -4
  79. data/test/stripe/coupon_test.rb +10 -10
  80. data/test/stripe/customer_card_test.rb +11 -15
  81. data/test/stripe/customer_test.rb +26 -27
  82. data/test/stripe/dispute_test.rb +8 -8
  83. data/test/stripe/ephemeral_key_test.rb +14 -14
  84. data/test/stripe/errors_test.rb +2 -2
  85. data/test/stripe/file_upload_test.rb +26 -28
  86. data/test/stripe/invoice_item_test.rb +14 -14
  87. data/test/stripe/invoice_line_item_test.rb +1 -1
  88. data/test/stripe/invoice_test.rb +37 -37
  89. data/test/stripe/list_object_test.rb +60 -76
  90. data/test/stripe/login_link_test.rb +14 -14
  91. data/test/stripe/oauth_test.rb +42 -50
  92. data/test/stripe/order_return_test.rb +5 -5
  93. data/test/stripe/order_test.rb +12 -12
  94. data/test/stripe/payout_test.rb +9 -9
  95. data/test/stripe/plan_test.rb +9 -9
  96. data/test/stripe/product_test.rb +8 -8
  97. data/test/stripe/recipient_test.rb +9 -10
  98. data/test/stripe/refund_test.rb +9 -9
  99. data/test/stripe/reversal_test.rb +10 -10
  100. data/test/stripe/sku_test.rb +8 -8
  101. data/test/stripe/source_test.rb +14 -16
  102. data/test/stripe/stripe_client_test.rb +235 -266
  103. data/test/stripe/stripe_object_test.rb +163 -147
  104. data/test/stripe/stripe_response_test.rb +4 -3
  105. data/test/stripe/subscription_item_test.rb +11 -11
  106. data/test/stripe/subscription_test.rb +14 -14
  107. data/test/stripe/three_d_secure_test.rb +2 -2
  108. data/test/stripe/transfer_test.rb +8 -8
  109. data/test/stripe/util_test.rb +59 -57
  110. data/test/stripe/webhook_test.rb +18 -16
  111. data/test/stripe_test.rb +4 -4
  112. data/test/test_data.rb +26 -26
  113. data/test/test_helper.rb +29 -25
  114. metadata +6 -10
  115. data/test/stripe/bitcoin_receiver_test.rb +0 -67
  116. data/test/stripe/bitcoin_transaction_test.rb +0 -19
  117. data/test/stripe/recipient_card_test.rb +0 -44
@@ -1,11 +1,11 @@
1
- require File.expand_path('../../test_helper', __FILE__)
1
+ require File.expand_path("../../test_helper", __FILE__)
2
2
 
3
3
  module Stripe
4
4
  class StripeObjectTest < Test::Unit::TestCase
5
5
  should "implement #==" do
6
- obj1 = Stripe::StripeObject.construct_from({ :id => 1, :foo => "bar" })
7
- obj2 = Stripe::StripeObject.construct_from({ :id => 1, :foo => "bar" })
8
- obj3 = Stripe::StripeObject.construct_from({ :id => 1, :foo => "rab" })
6
+ obj1 = Stripe::StripeObject.construct_from(id: 1, foo: "bar")
7
+ obj2 = Stripe::StripeObject.construct_from(id: 1, foo: "bar")
8
+ obj3 = Stripe::StripeObject.construct_from(id: 1, foo: "rab")
9
9
 
10
10
  assert obj1 == obj2
11
11
  refute obj1 == obj3
@@ -15,66 +15,118 @@ module Stripe
15
15
  obj = Stripe::StripeObject.construct_from({})
16
16
  refute obj.deleted?
17
17
 
18
- obj = Stripe::StripeObject.construct_from({ :deleted => false })
18
+ obj = Stripe::StripeObject.construct_from(deleted: false)
19
19
  refute obj.deleted?
20
20
 
21
- obj = Stripe::StripeObject.construct_from({ :deleted => true })
21
+ obj = Stripe::StripeObject.construct_from(deleted: true)
22
22
  assert obj.deleted?
23
23
  end
24
24
 
25
25
  should "implement #respond_to" do
26
- obj = Stripe::StripeObject.construct_from({ :id => 1, :foo => 'bar' })
26
+ obj = Stripe::StripeObject.construct_from(id: 1, foo: "bar")
27
27
  assert obj.respond_to?(:id)
28
28
  assert obj.respond_to?(:foo)
29
29
  assert !obj.respond_to?(:baz)
30
30
  end
31
31
 
32
32
  should "marshal be insensitive to strings vs. symbols when constructin" do
33
- obj = Stripe::StripeObject.construct_from({ :id => 1, 'name' => 'Stripe' })
33
+ obj = Stripe::StripeObject.construct_from(:id => 1, "name" => "Stripe")
34
34
  assert_equal 1, obj[:id]
35
- assert_equal 'Stripe', obj[:name]
35
+ assert_equal "Stripe", obj[:name]
36
36
  end
37
37
 
38
- should "marshal a stripe object correctly" do
39
- obj = Stripe::StripeObject.construct_from(
40
- { :id => 1, :name => 'Stripe' },
41
- {
42
- :api_key => 'apikey',
43
- # StripeClient is not serializable and is expected to be removed
44
- # when marshalling StripeObjects
45
- :client => StripeClient.active_client,
38
+ context "#deep_copy" do
39
+ should "produce a deep copy" do
40
+ opts = {
41
+ api_base: Stripe.api_base,
42
+ api_key: "apikey",
46
43
  }
47
- )
48
- m = Marshal.load(Marshal.dump(obj))
49
- assert_equal 1, m.id
50
- assert_equal 'Stripe', m.name
51
- expected_hash = {:api_key => 'apikey'}
52
- assert_equal expected_hash, m.instance_variable_get('@opts')
44
+ values = {
45
+ id: 1,
46
+ name: "Stripe",
47
+ arr: [
48
+ StripeObject.construct_from({ id: "index0" }, opts),
49
+ "index1",
50
+ 2,
51
+ ],
52
+ map: {
53
+ :"0" => StripeObject.construct_from({ id: "index0" }, opts),
54
+ :"1" => "index1",
55
+ :"2" => 2,
56
+ },
57
+ }
58
+
59
+ # it's not good to test methods with `#send` like this, but I've done
60
+ # it in the interest of trying to keep `.deep_copy` as internal as
61
+ # possible
62
+ copy_values = Stripe::StripeObject.send(:deep_copy, values)
63
+
64
+ # we can't compare the hashes directly because they have embedded
65
+ # objects which are different from each other
66
+ assert_equal values[:id], copy_values[:id]
67
+ assert_equal values[:name], copy_values[:name]
68
+
69
+ assert_equal values[:arr].length, copy_values[:arr].length
70
+
71
+ # internal values of the copied StripeObject should be the same
72
+ # (including opts), but the object itself should be new (hence the
73
+ # refutation of equality on #object_id)
74
+ assert_equal values[:arr][0][:id], copy_values[:arr][0][:id]
75
+ refute_equal values[:arr][0].object_id, copy_values[:arr][0].object_id
76
+ assert_equal values[:arr][0].instance_variable_get(:@opts),
77
+ copy_values[:arr][0].instance_variable_get(:@opts)
78
+
79
+ # scalars however, can be compared
80
+ assert_equal values[:arr][1], copy_values[:arr][1]
81
+ assert_equal values[:arr][2], copy_values[:arr][2]
82
+
83
+ # and a similar story with the hash
84
+ assert_equal values[:map].keys, copy_values[:map].keys
85
+ assert_equal values[:map][:"0"][:id], copy_values[:map][:"0"][:id]
86
+ refute_equal values[:map][:"0"].object_id, copy_values[:map][:"0"].object_id
87
+ assert_equal values[:map][:"0"].instance_variable_get(:@opts),
88
+ copy_values[:map][:"0"].instance_variable_get(:@opts)
89
+ assert_equal values[:map][:"1"], copy_values[:map][:"1"]
90
+ assert_equal values[:map][:"2"], copy_values[:map][:"2"]
91
+ end
92
+
93
+ should "not copy a client" do
94
+ opts = {
95
+ api_key: "apikey",
96
+ client: StripeClient.active_client,
97
+ }
98
+ values = { id: 1, name: "Stripe" }
99
+
100
+ obj = Stripe::StripeObject.construct_from(values, opts)
101
+ copy_obj = Stripe::StripeObject.send(:deep_copy, obj)
102
+
103
+ assert_equal values, copy_obj.instance_variable_get(:@values)
104
+ assert_equal opts.reject { |k, _v| k == :client },
105
+ copy_obj.instance_variable_get(:@opts)
106
+ end
53
107
  end
54
108
 
55
109
  should "recursively call to_hash on its values" do
56
110
  # deep nested hash (when contained in an array) or StripeObject
57
- nested_hash = { :id => 7, :foo => 'bar' }
111
+ nested_hash = { id: 7, foo: "bar" }
58
112
  nested = Stripe::StripeObject.construct_from(nested_hash)
59
113
 
60
- obj = Stripe::StripeObject.construct_from({
61
- :id => 1,
62
- # simple hash that contains a StripeObject to help us test deep
63
- # recursion
64
- :nested => { :object => 'list', :data => [nested] },
65
- :list => [nested]
66
- })
114
+ obj = Stripe::StripeObject.construct_from(id: 1,
115
+ # simple hash that contains a StripeObject to help us test deep
116
+ # recursion
117
+ nested: { object: "list", data: [nested] },
118
+ list: [nested])
67
119
 
68
120
  expected_hash = {
69
- :id => 1,
70
- :nested => { :object => 'list', :data => [nested_hash] },
71
- :list => [nested_hash]
121
+ id: 1,
122
+ nested: { object: "list", data: [nested_hash] },
123
+ list: [nested_hash],
72
124
  }
73
125
  assert_equal expected_hash, obj.to_hash
74
126
  end
75
127
 
76
128
  should "assign question mark accessors for booleans" do
77
- obj = Stripe::StripeObject.construct_from({ :id => 1, :bool => true, :not_bool => 'bar' })
129
+ obj = Stripe::StripeObject.construct_from(id: 1, bool: true, not_bool: "bar")
78
130
  assert obj.respond_to?(:bool?)
79
131
  assert obj.bool?
80
132
  refute obj.respond_to?(:not_bool?)
@@ -88,27 +140,27 @@ module Stripe
88
140
  end
89
141
 
90
142
  should "mass assign values with #update_attributes" do
91
- obj = Stripe::StripeObject.construct_from({ :id => 1, :name => 'Stripe' })
92
- obj.update_attributes(:name => 'STRIPE')
143
+ obj = Stripe::StripeObject.construct_from(id: 1, name: "Stripe")
144
+ obj.update_attributes(name: "STRIPE")
93
145
  assert_equal "STRIPE", obj.name
94
146
 
95
147
  # unfortunately, we even assign unknown properties to duplicate the
96
148
  # behavior that we currently have via magic accessors with
97
149
  # method_missing
98
- obj.update_attributes(:unknown => 'foo')
150
+ obj.update_attributes(unknown: "foo")
99
151
  assert_equal "foo", obj.unknown
100
152
  end
101
153
 
102
154
  should "#update_attributes with a hash" do
103
155
  obj = Stripe::StripeObject.construct_from({})
104
- obj.update_attributes(:metadata => { :foo => 'bar' })
156
+ obj.update_attributes(metadata: { foo: "bar" })
105
157
  assert_equal Stripe::StripeObject, obj.metadata.class
106
158
  end
107
159
 
108
160
  should "create accessors when #update_attributes is called" do
109
161
  obj = Stripe::StripeObject.construct_from({})
110
162
  assert_equal false, obj.send(:metaclass).method_defined?(:foo)
111
- obj.update_attributes(:foo => 'bar')
163
+ obj.update_attributes(foo: "bar")
112
164
  assert_equal true, obj.send(:metaclass).method_defined?(:foo)
113
165
  end
114
166
 
@@ -118,8 +170,8 @@ module Stripe
118
170
  begin
119
171
  obj = Stripe::StripeObject.construct_from({})
120
172
  obj.refresh_from({}, {})
121
- message = "NOTE: Stripe::StripeObject#refresh_from is " +
122
- "deprecated; use #update_attributes instead"
173
+ message = "NOTE: Stripe::StripeObject#refresh_from is " \
174
+ "deprecated; use #update_attributes instead"
123
175
  assert_match Regexp.new(message), $stderr.string
124
176
  ensure
125
177
  $stderr = old_stderr
@@ -127,14 +179,14 @@ module Stripe
127
179
  end
128
180
 
129
181
  should "pass opts down to children when initializing" do
130
- opts = { :custom => "opts" }
182
+ opts = { custom: "opts" }
131
183
 
132
184
  # customer comes with a `sources` list that makes a convenient object to
133
185
  # perform tests on
134
186
  obj = Stripe::StripeObject.construct_from({
135
187
  sources: [
136
- {}
137
- ]
188
+ {},
189
+ ],
138
190
  }, opts)
139
191
 
140
192
  source = obj.sources.first
@@ -152,79 +204,63 @@ module Stripe
152
204
 
153
205
  should "#serialize_params on a new object with a subobject" do
154
206
  obj = Stripe::StripeObject.new
155
- obj.metadata = { :foo => "bar" }
156
- assert_equal({ :metadata => { :foo => "bar" } },
157
- obj.serialize_params)
207
+ obj.metadata = { foo: "bar" }
208
+ assert_equal({ metadata: { foo: "bar" } },
209
+ obj.serialize_params)
158
210
  end
159
211
 
160
212
  should "#serialize_params on a basic object" do
161
- obj = Stripe::StripeObject.construct_from({ :foo => nil })
162
- obj.update_attributes(:foo => "bar")
163
- assert_equal({ :foo => "bar" }, obj.serialize_params)
213
+ obj = Stripe::StripeObject.construct_from(foo: nil)
214
+ obj.update_attributes(foo: "bar")
215
+ assert_equal({ foo: "bar" }, obj.serialize_params)
164
216
  end
165
217
 
166
218
  should "#serialize_params on a more complex object" do
167
- obj = Stripe::StripeObject.construct_from({
168
- :foo => Stripe::StripeObject.construct_from({
169
- :bar => nil,
170
- :baz => nil,
171
- }),
172
- })
219
+ obj = Stripe::StripeObject.construct_from(foo: Stripe::StripeObject.construct_from(bar: nil,
220
+ baz: nil))
173
221
  obj.foo.bar = "newbar"
174
- assert_equal({ :foo => { :bar => "newbar" } },
175
- obj.serialize_params)
222
+ assert_equal({ foo: { bar: "newbar" } },
223
+ obj.serialize_params)
176
224
  end
177
225
 
178
226
  should "#serialize_params on an array" do
179
- obj = Stripe::StripeObject.construct_from({
180
- :foo => nil,
181
- })
227
+ obj = Stripe::StripeObject.construct_from(foo: nil)
182
228
  obj.foo = ["new-value"]
183
- assert_equal({ :foo => ["new-value"] },
184
- obj.serialize_params)
229
+ assert_equal({ foo: ["new-value"] },
230
+ obj.serialize_params)
185
231
  end
186
232
 
187
233
  should "#serialize_params on an array that shortens" do
188
- obj = Stripe::StripeObject.construct_from({
189
- :foo => ["0-index", "1-index", "2-index"],
190
- })
234
+ obj = Stripe::StripeObject.construct_from(foo: ["0-index", "1-index", "2-index"])
191
235
  obj.foo = ["new-value"]
192
- assert_equal({ :foo => ["new-value"] },
193
- obj.serialize_params)
236
+ assert_equal({ foo: ["new-value"] },
237
+ obj.serialize_params)
194
238
  end
195
239
 
196
240
  should "#serialize_params on an array that lengthens" do
197
- obj = Stripe::StripeObject.construct_from({
198
- :foo => ["0-index", "1-index", "2-index"],
199
- })
241
+ obj = Stripe::StripeObject.construct_from(foo: ["0-index", "1-index", "2-index"])
200
242
  obj.foo = ["new-value"] * 4
201
- assert_equal({ :foo => ["new-value"] * 4 },
202
- obj.serialize_params)
243
+ assert_equal({ foo: ["new-value"] * 4 },
244
+ obj.serialize_params)
203
245
  end
204
246
 
205
247
  should "#serialize_params on an array of hashes" do
206
- obj = Stripe::StripeObject.construct_from({
207
- :foo => nil,
208
- })
248
+ obj = Stripe::StripeObject.construct_from(foo: nil)
209
249
  obj.foo = [
210
- Stripe::StripeObject.construct_from({
211
- :bar => nil
212
- })
250
+ Stripe::StripeObject.construct_from(bar: nil),
213
251
  ]
214
252
  obj.foo[0].bar = "baz"
215
- assert_equal({ :foo => [{ :bar => "baz" }] },
216
- obj.serialize_params)
253
+ assert_equal({ foo: [{ bar: "baz" }] },
254
+ obj.serialize_params)
217
255
  end
218
256
 
219
257
  should "#serialize_params doesn't include unchanged values" do
220
- obj = Stripe::StripeObject.construct_from({ :foo => nil })
258
+ obj = Stripe::StripeObject.construct_from(foo: nil)
221
259
  assert_equal({}, obj.serialize_params)
222
260
  end
223
261
 
224
262
  should "#serialize_params on an array that is unchanged" do
225
- obj = Stripe::StripeObject.construct_from({
226
- :foo => ["0-index", "1-index", "2-index"],
227
- })
263
+ obj = Stripe::StripeObject.construct_from(foo: ["0-index", "1-index", "2-index"])
228
264
  obj.foo = ["0-index", "1-index", "2-index"]
229
265
  assert_equal({}, obj.serialize_params)
230
266
  end
@@ -235,39 +271,37 @@ module Stripe
235
271
  # using an #update_attributes will end up converting a Hash into a
236
272
  # StripeObject
237
273
  obj.metadata =
238
- Stripe::StripeObject.construct_from({ :foo => 'bar' })
274
+ Stripe::StripeObject.construct_from(foo: "bar")
239
275
 
240
276
  serialized = obj.serialize_params
241
- assert_equal({ :foo => "bar" }, serialized[:metadata])
277
+ assert_equal({ foo: "bar" }, serialized[:metadata])
242
278
  end
243
279
 
244
280
  should "#serialize_params with a StripeObject that's been replaced" do
245
- obj = Stripe::StripeObject.construct_from({
246
- :metadata => Stripe::StripeObject.construct_from({ :bar => 'foo' })
247
- })
281
+ obj = Stripe::StripeObject.construct_from(metadata: Stripe::StripeObject.construct_from(bar: "foo"))
248
282
 
249
283
  # Here we replace the object wholesale which means that the client must
250
284
  # be able to blank out the values that were in the old object, but which
251
285
  # are no longer present in the new one.
252
286
  obj.metadata =
253
- Stripe::StripeObject.construct_from({ :baz => 'foo' })
287
+ Stripe::StripeObject.construct_from(baz: "foo")
254
288
 
255
289
  serialized = obj.serialize_params
256
- assert_equal({ :bar => "", :baz => 'foo' }, serialized[:metadata])
290
+ assert_equal({ bar: "", baz: "foo" }, serialized[:metadata])
257
291
  end
258
292
 
259
293
  should "#serialize_params with an array of StripeObjects" do
260
294
  obj = Stripe::StripeObject.construct_from({})
261
295
  obj.metadata = [
262
- Stripe::StripeObject.construct_from({ :foo => 'bar' })
296
+ Stripe::StripeObject.construct_from(foo: "bar"),
263
297
  ]
264
298
 
265
299
  serialized = obj.serialize_params
266
- assert_equal([{ :foo => "bar" }], serialized[:metadata])
300
+ assert_equal([{ foo: "bar" }], serialized[:metadata])
267
301
  end
268
302
 
269
303
  should "#serialize_params and embed an API resource that's been set and has an ID" do
270
- customer = Customer.construct_from({ :id => "cus_123" })
304
+ customer = Customer.construct_from(id: "cus_123")
271
305
  obj = Stripe::StripeObject.construct_from({})
272
306
 
273
307
  # the key here is that the property is set explicitly (and therefore
@@ -275,14 +309,12 @@ module Stripe
275
309
  obj.customer = customer
276
310
 
277
311
  serialized = obj.serialize_params
278
- assert_equal({ :customer => customer }, serialized)
312
+ assert_equal({ customer: customer }, serialized)
279
313
  end
280
314
 
281
315
  should "#serialize_params and not include API resources that have not been set" do
282
- customer = Customer.construct_from({ :id => "cus_123" })
283
- obj = Stripe::StripeObject.construct_from({
284
- :customer => customer
285
- })
316
+ customer = Customer.construct_from(id: "cus_123")
317
+ obj = Stripe::StripeObject.construct_from(customer: customer)
286
318
 
287
319
  serialized = obj.serialize_params
288
320
  assert_equal({}, serialized)
@@ -292,12 +324,10 @@ module Stripe
292
324
  c = Customer.construct_from({})
293
325
  c.save_with_parent = true
294
326
 
295
- obj = Stripe::StripeObject.construct_from({
296
- :customer => c,
297
- })
327
+ obj = Stripe::StripeObject.construct_from(customer: c)
298
328
 
299
329
  serialized = obj.serialize_params
300
- assert_equal({ :customer => {} }, serialized)
330
+ assert_equal({ customer: {} }, serialized)
301
331
  end
302
332
 
303
333
  should "#serialize_params should raise an error on other embedded API resources" do
@@ -318,57 +348,43 @@ module Stripe
318
348
  end
319
349
 
320
350
  should "#serialize_params takes a force option" do
321
- obj = Stripe::StripeObject.construct_from({
322
- :id => 'id',
323
- :metadata => Stripe::StripeObject.construct_from({ :foo => 'bar' })
324
- })
351
+ obj = Stripe::StripeObject.construct_from(id: "id",
352
+ metadata: Stripe::StripeObject.construct_from(foo: "bar"))
325
353
 
326
- serialized = obj.serialize_params(:force => true)
327
- assert_equal({ :id => 'id', :metadata => { :foo => 'bar' } }, serialized)
354
+ serialized = obj.serialize_params(force: true)
355
+ assert_equal({ id: "id", metadata: { foo: "bar" } }, serialized)
328
356
  end
329
357
 
330
358
  should "#dirty! forces an object and its subobjects to be saved" do
331
- obj = Stripe::StripeObject.construct_from({
332
- :id => 'id',
333
- :metadata => Stripe::StripeObject.construct_from({ :foo => 'bar' })
334
- })
359
+ obj = Stripe::StripeObject.construct_from(id: "id",
360
+ metadata: Stripe::StripeObject.construct_from(foo: "bar"))
335
361
 
336
362
  # note that `force` and `dirty!` are for different things, but are
337
363
  # functionally equivalent
338
364
  obj.dirty!
339
365
 
340
366
  serialized = obj.serialize_params
341
- assert_equal({ :id => 'id', :metadata => { :foo => 'bar' } }, serialized)
367
+ assert_equal({ id: "id", metadata: { foo: "bar" } }, serialized)
342
368
  end
343
369
 
344
370
  should "#to_s will call to_s for all embedded stripe objects" do
345
- obj = Stripe::StripeObject.construct_from({
346
- id: 'id',
347
- #embeded list object
348
- refunds: Stripe::ListObject.construct_from({ data: [
349
- #embedded object in list
350
- Stripe::StripeObject.construct_from({
351
- id: 'id',
352
- #embedded object in an object in a list object
353
- metadata: Stripe::StripeObject.construct_from({
354
- foo: 'bar',
355
- })
356
- })
357
- ]}),
358
- # embeded stripe object
359
- metadata: Stripe::StripeObject.construct_from({
360
- foo: 'bar',
361
- })
362
- })
363
- expected = JSON.pretty_generate({
364
- id: 'id',
365
- refunds: {
366
- data: [
367
- {id: 'id', metadata: {foo: 'bar'}}
368
- ]
369
- },
370
- metadata: { foo: 'bar' }
371
- })
371
+ obj = Stripe::StripeObject.construct_from(id: "id",
372
+ # embeded list object
373
+ refunds: Stripe::ListObject.construct_from(data: [
374
+ # embedded object in list
375
+ Stripe::StripeObject.construct_from(id: "id",
376
+ # embedded object in an object in a list object
377
+ metadata: Stripe::StripeObject.construct_from(foo: "bar")),
378
+ ]),
379
+ # embeded stripe object
380
+ metadata: Stripe::StripeObject.construct_from(foo: "bar"))
381
+ expected = JSON.pretty_generate(id: "id",
382
+ refunds: {
383
+ data: [
384
+ { id: "id", metadata: { foo: "bar" } },
385
+ ],
386
+ },
387
+ metadata: { foo: "bar" })
372
388
 
373
389
  assert_equal(expected, obj.to_s)
374
390
  end
@@ -379,8 +395,8 @@ module Stripe
379
395
  begin
380
396
  obj = Stripe::StripeObject.construct_from({})
381
397
  Stripe::StripeObject.serialize_params(obj)
382
- message = "NOTE: Stripe::StripeObject.serialize_params is " +
383
- "deprecated; use #serialize_params instead"
398
+ message = "NOTE: Stripe::StripeObject.serialize_params is " \
399
+ "deprecated; use #serialize_params instead"
384
400
  assert_match Regexp.new(message), $stderr.string
385
401
  ensure
386
402
  $stderr = old_stderr
@@ -388,11 +404,11 @@ module Stripe
388
404
  end
389
405
 
390
406
  should "error on setting a property to an empty string" do
391
- obj = Stripe::StripeObject.construct_from({ :foo => 'bar' })
407
+ obj = Stripe::StripeObject.construct_from(foo: "bar")
392
408
  e = assert_raises ArgumentError do
393
409
  obj.foo = ""
394
410
  end
395
- assert_match %r{\(object\).foo = nil}, e.message
411
+ assert_match(/\(object\).foo = nil/, e.message)
396
412
  end
397
413
  end
398
414
  end