stripe 3.0.0 → 3.0.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.
- checksums.yaml +4 -4
- data/History.txt +5 -0
- data/VERSION +1 -1
- data/lib/stripe/stripe_object.rb +27 -8
- data/lib/stripe/version.rb +1 -1
- data/test/stripe/stripe_object_test.rb +33 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79dc89b3485d9c9077874530b9483ba3a048b1d8
|
4
|
+
data.tar.gz: a73e14de59f52f2282196f1a30537a7d6c353497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59133df8f5c29d44597f9a8145c77f0becf8705fe1b507b4612fb57930eb0b09afa2ef05e1ebe10c52e0749484bbcc957dbf998a2eb50df3d3d9879a9bcb2004
|
7
|
+
data.tar.gz: e5b4737ca902571ed0866df6b1401c5c3a2823d70e8a8da224dc5f2266b50cb454cffade965b5746098ce07e8ce0dd6eeedfe6c0b8c444a275d935eb9e008a42
|
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 3.0.1 2017-07-11
|
2
|
+
|
3
|
+
* Properties set with an API resource will now serialize that resource's ID if possible
|
4
|
+
* API resources will throw an ArgumentError on save if a property has been with an API resource that cannot be serialized
|
5
|
+
|
1
6
|
=== 3.0.0 2017-06-27
|
2
7
|
|
3
8
|
* `#pay` on invoice now takes params as well as opts
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.1
|
data/lib/stripe/stripe_object.rb
CHANGED
@@ -176,7 +176,7 @@ module Stripe
|
|
176
176
|
unsaved = @unsaved_values.include?(k)
|
177
177
|
if options[:force] || unsaved || v.is_a?(StripeObject)
|
178
178
|
update_hash[k.to_sym] =
|
179
|
-
serialize_params_value(@values[k], @original_values[k], unsaved, options[:force])
|
179
|
+
serialize_params_value(@values[k], @original_values[k], unsaved, options[:force], key: k)
|
180
180
|
end
|
181
181
|
end
|
182
182
|
|
@@ -337,7 +337,7 @@ module Stripe
|
|
337
337
|
self
|
338
338
|
end
|
339
339
|
|
340
|
-
def serialize_params_value(value, original, unsaved, force)
|
340
|
+
def serialize_params_value(value, original, unsaved, force, key: nil)
|
341
341
|
case true
|
342
342
|
when value == nil
|
343
343
|
''
|
@@ -348,13 +348,32 @@ module Stripe
|
|
348
348
|
# be updated from their proper endpoints, and therefore they are not
|
349
349
|
# included when serializing even if they've been modified.
|
350
350
|
#
|
351
|
-
# There are _some_ known exceptions though.
|
352
|
-
#
|
353
|
-
#
|
354
|
-
# the
|
355
|
-
#
|
351
|
+
# There are _some_ known exceptions though.
|
352
|
+
#
|
353
|
+
# For example, if the value is unsaved (meaning the user has set it), and
|
354
|
+
# it looks like the API resource is persisted with an ID, then we include
|
355
|
+
# the object so that parameters are serialized with a reference to its
|
356
|
+
# ID.
|
357
|
+
#
|
358
|
+
# Another example is that on save API calls it's sometimes desirable to
|
359
|
+
# update a customer's default source by setting a new card (or other)
|
360
|
+
# object with `#source=` and then saving the customer. The
|
361
|
+
# `#save_with_parent` flag to override the default behavior allows us to
|
362
|
+
# handle these exceptions.
|
363
|
+
#
|
364
|
+
# We throw an error if a property was set explicitly but we can't do
|
365
|
+
# anything with it because the integration is probably not working as the
|
366
|
+
# user intended it to.
|
356
367
|
when value.is_a?(APIResource) && !value.save_with_parent
|
357
|
-
|
368
|
+
if !unsaved
|
369
|
+
nil
|
370
|
+
elsif value.respond_to?(:id) && value.id != nil
|
371
|
+
value
|
372
|
+
else
|
373
|
+
raise ArgumentError, "Cannot save property `#{key}` containing " \
|
374
|
+
"an API resource. It doesn't appear to be persisted and is " \
|
375
|
+
"not marked as `save_with_parent`."
|
376
|
+
end
|
358
377
|
|
359
378
|
when value.is_a?(Array)
|
360
379
|
update = value.map { |v| serialize_params_value(v, nil, true, force) }
|
data/lib/stripe/version.rb
CHANGED
@@ -266,16 +266,29 @@ module Stripe
|
|
266
266
|
assert_equal([{ :foo => "bar" }], serialized[:metadata])
|
267
267
|
end
|
268
268
|
|
269
|
-
should "#serialize_params and
|
269
|
+
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" })
|
271
|
+
obj = Stripe::StripeObject.construct_from({})
|
272
|
+
|
273
|
+
# the key here is that the property is set explicitly (and therefore
|
274
|
+
# marked as unsaved), which is why it gets included below
|
275
|
+
obj.customer = customer
|
276
|
+
|
277
|
+
serialized = obj.serialize_params
|
278
|
+
assert_equal({ :customer => customer }, serialized)
|
279
|
+
end
|
280
|
+
|
281
|
+
should "#serialize_params and not include API resources that have not been set" do
|
282
|
+
customer = Customer.construct_from({ :id => "cus_123" })
|
270
283
|
obj = Stripe::StripeObject.construct_from({
|
271
|
-
:customer =>
|
284
|
+
:customer => customer
|
272
285
|
})
|
273
286
|
|
274
287
|
serialized = obj.serialize_params
|
275
288
|
assert_equal({}, serialized)
|
276
289
|
end
|
277
290
|
|
278
|
-
should "#serialize_params
|
291
|
+
should "#serialize_params serializes API resources flagged with save_with_parent" do
|
279
292
|
c = Customer.construct_from({})
|
280
293
|
c.save_with_parent = true
|
281
294
|
|
@@ -287,6 +300,23 @@ module Stripe
|
|
287
300
|
assert_equal({ :customer => {} }, serialized)
|
288
301
|
end
|
289
302
|
|
303
|
+
should "#serialize_params should raise an error on other embedded API resources" do
|
304
|
+
# This customer doesn't have an ID and therefore the library doesn't know
|
305
|
+
# what to do with it and throws an ArgumentError because it's probably
|
306
|
+
# not what the user expected to happen.
|
307
|
+
customer = Customer.construct_from({})
|
308
|
+
|
309
|
+
obj = Stripe::StripeObject.construct_from({})
|
310
|
+
obj.customer = customer
|
311
|
+
|
312
|
+
e = assert_raises(ArgumentError) do
|
313
|
+
obj.serialize_params
|
314
|
+
end
|
315
|
+
assert_equal "Cannot save property `customer` containing " \
|
316
|
+
"an API resource. It doesn't appear to be persisted and is " \
|
317
|
+
"not marked as `save_with_parent`.", e.message
|
318
|
+
end
|
319
|
+
|
290
320
|
should "#serialize_params takes a force option" do
|
291
321
|
obj = Stripe::StripeObject.construct_from({
|
292
322
|
:id => 'id',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stripe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -233,3 +233,4 @@ test_files:
|
|
233
233
|
- test/stripe_test.rb
|
234
234
|
- test/test_data.rb
|
235
235
|
- test/test_helper.rb
|
236
|
+
has_rdoc:
|