stripe-ruby/test/stripe/stripe_object_test.rb
Brandur 42ea34b969 Pagination
Usage on a top-level collection:

```
Stripe::Customer.list.auto_paging_each do |customer|
  puts customer
end
```

Usage on a subcollection:

``` ruby
customer.invoices.auto_paging_each do |invoice|
  puts invoice
end
```

We've also renamed `#all` to `#list` to prevent confusion ("all" implies
that all resources are being returned, and in Stripe's paginated API
this was not the case). An alias has been provided for backward API
compatibility.

Fixes #167.

Replaces #211 and #248.
2015-10-05 12:15:09 -07:00

63 lines
2.3 KiB
Ruby

require File.expand_path('../../test_helper', __FILE__)
module Stripe
class StripeObjectTest < Test::Unit::TestCase
should "implement #==" do
obj1 = Stripe::StripeObject.construct_from({ :id => 1, :foo => "bar" })
obj2 = Stripe::StripeObject.construct_from({ :id => 1, :foo => "bar" })
obj3 = Stripe::StripeObject.construct_from({ :id => 1, :foo => "rab" })
assert obj1 == obj2
refute obj1 == obj3
end
should "implement #respond_to" do
obj = Stripe::StripeObject.construct_from({ :id => 1, :foo => 'bar' })
assert obj.respond_to?(:id)
assert obj.respond_to?(:foo)
assert !obj.respond_to?(:baz)
end
should "marshal be insensitive to strings vs. symbols when constructin" do
obj = Stripe::StripeObject.construct_from({ :id => 1, 'name' => 'Stripe' })
assert_equal 1, obj[:id]
assert_equal 'Stripe', obj[:name]
end
should "marshal a stripe object correctly" do
obj = Stripe::StripeObject.construct_from({ :id => 1, :name => 'Stripe' }, {:api_key => 'apikey'})
m = Marshal.load(Marshal.dump(obj))
assert_equal 1, m.id
assert_equal 'Stripe', m.name
expected_hash = {:api_key => 'apikey'}
assert_equal expected_hash, m.instance_variable_get('@opts')
end
should "recursively call to_hash on its values" do
nested_hash = { :id => 7, :foo => 'bar' }
nested = Stripe::StripeObject.construct_from(nested_hash)
obj = Stripe::StripeObject.construct_from({ :id => 1, :nested => nested, :list => [nested] })
expected_hash = { :id => 1, :nested => nested_hash, :list => [nested_hash] }
assert_equal expected_hash, obj.to_hash
end
should "assign question mark accessors for booleans" do
obj = Stripe::StripeObject.construct_from({ :id => 1, :bool => true, :not_bool => 'bar' })
assert obj.respond_to?(:bool?)
assert obj.bool?
refute obj.respond_to?(:not_bool?)
end
should "mass assign values with #update_attributes" do
obj = Stripe::StripeObject.construct_from({ :id => 1, :name => 'Stripe' })
obj.update_attributes(:name => 'STRIPE')
assert_equal "STRIPE", obj.name
e = assert_raises(ArgumentError) do
obj.update_attributes(:foo => 'bar')
end
assert_equal "foo is not an attribute that can be assigned on this object", e.message
end
end
end