mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-11-29 00:01:18 -05:00
commit
1f1ebafe36
@ -33,6 +33,7 @@ require 'stripe/token'
|
|||||||
require 'stripe/event'
|
require 'stripe/event'
|
||||||
require 'stripe/transfer'
|
require 'stripe/transfer'
|
||||||
require 'stripe/recipient'
|
require 'stripe/recipient'
|
||||||
|
require 'stripe/card'
|
||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
require 'stripe/errors/stripe_error'
|
require 'stripe/errors/stripe_error'
|
||||||
|
|||||||
14
lib/stripe/card.rb
Normal file
14
lib/stripe/card.rb
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
module Stripe
|
||||||
|
class Card < APIResource
|
||||||
|
include Stripe::APIOperations::Update
|
||||||
|
include Stripe::APIOperations::Delete
|
||||||
|
|
||||||
|
def url
|
||||||
|
"#{Customer.url}/#{CGI.escape(customer)}/cards/#{CGI.escape(id)}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.retrieve(id, api_key=nil)
|
||||||
|
raise NotImplementedError.new("Cards cannot be retrieved without a customer ID. Retrieve a card using customer.cards.retrieve('card_id')")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -1,5 +1,6 @@
|
|||||||
module Stripe
|
module Stripe
|
||||||
class ListObject < StripeObject
|
class ListObject < StripeObject
|
||||||
|
|
||||||
def [](k)
|
def [](k)
|
||||||
case k
|
case k
|
||||||
when String, Symbol
|
when String, Symbol
|
||||||
@ -13,10 +14,22 @@ module Stripe
|
|||||||
self.data.each(&blk)
|
self.data.each(&blk)
|
||||||
end
|
end
|
||||||
|
|
||||||
def all(filters={})
|
def retrieve(id, api_key=nil)
|
||||||
response, api_key = Stripe.request(:get, url, @api_key, filters)
|
api_key ||= @api_key
|
||||||
|
response, api_key = Stripe.request(:get,"#{url}/#{CGI.escape(id)}", api_key)
|
||||||
Util.convert_to_stripe_object(response, api_key)
|
Util.convert_to_stripe_object(response, api_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create(params={}, api_key=nil)
|
||||||
|
api_key ||= @api_key
|
||||||
|
response, api_key = Stripe.request(:post, url, api_key, params)
|
||||||
|
Util.convert_to_stripe_object(response, api_key)
|
||||||
|
end
|
||||||
|
|
||||||
|
def all(params={}, api_key=nil)
|
||||||
|
api_key ||= @api_key
|
||||||
|
response, api_key = Stripe.request(:get, url, api_key, params)
|
||||||
|
Util.convert_to_stripe_object(response, api_key)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -26,6 +26,7 @@ module Stripe
|
|||||||
'event' => Event,
|
'event' => Event,
|
||||||
'transfer' => Transfer,
|
'transfer' => Transfer,
|
||||||
'recipient' => Recipient,
|
'recipient' => Recipient,
|
||||||
|
'card' => Card,
|
||||||
'list' => ListObject
|
'list' => ListObject
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@ -5,7 +5,7 @@ require 'mocha/setup'
|
|||||||
include Mocha
|
include Mocha
|
||||||
|
|
||||||
#monkeypatch request methods
|
#monkeypatch request methods
|
||||||
module Stripe
|
module Stripe
|
||||||
@mock_rest_client = nil
|
@mock_rest_client = nil
|
||||||
|
|
||||||
def self.mock_rest_client=(mock_client)
|
def self.mock_rest_client=(mock_client)
|
||||||
@ -42,16 +42,9 @@ def test_customer(params={})
|
|||||||
:livemode => false,
|
:livemode => false,
|
||||||
:object => "customer",
|
:object => "customer",
|
||||||
:id => "c_test_customer",
|
:id => "c_test_customer",
|
||||||
:active_card => {
|
:default_card => "cc_test_card",
|
||||||
:type => "Visa",
|
:created => 1304114758,
|
||||||
:last4 => "4242",
|
:cards => test_card_array('c_test_customer')
|
||||||
:exp_month => 11,
|
|
||||||
:country => "US",
|
|
||||||
:exp_year => 2012,
|
|
||||||
:id => "cc_test_card",
|
|
||||||
:object => "card"
|
|
||||||
},
|
|
||||||
:created => 1304114758
|
|
||||||
}.merge(params)
|
}.merge(params)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -88,12 +81,20 @@ end
|
|||||||
|
|
||||||
def test_charge_array
|
def test_charge_array
|
||||||
{
|
{
|
||||||
:data => [test_charge, test_charge, test_charge],
|
:data => [test_charge, test_charge, test_charge],
|
||||||
:object => 'list',
|
:object => 'list',
|
||||||
:url => '/v1/charges'
|
:url => '/v1/charges'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_card_array(customer_id)
|
||||||
|
{
|
||||||
|
:data => [test_card, test_card, test_card],
|
||||||
|
:object => 'list',
|
||||||
|
:url => '/v1/customers/' + customer_id + '/cards'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def test_card(params={})
|
def test_card(params={})
|
||||||
{
|
{
|
||||||
:type => "Visa",
|
:type => "Visa",
|
||||||
@ -102,7 +103,8 @@ def test_card(params={})
|
|||||||
:country => "US",
|
:country => "US",
|
||||||
:exp_year => 2012,
|
:exp_year => 2012,
|
||||||
:id => "cc_test_card",
|
:id => "cc_test_card",
|
||||||
:object => "card"
|
:customer => 'c_test_customer',
|
||||||
|
:object => "card"
|
||||||
}.merge(params)
|
}.merge(params)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -112,7 +114,7 @@ def test_coupon(params={})
|
|||||||
:duration_in_months => 3,
|
:duration_in_months => 3,
|
||||||
:percent_off => 25,
|
:percent_off => 25,
|
||||||
:id => "co_test_coupon",
|
:id => "co_test_coupon",
|
||||||
:object => "coupon"
|
:object => "coupon"
|
||||||
}.merge(params)
|
}.merge(params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -454,12 +454,6 @@ class TestStripeRuby < Test::Unit::TestCase
|
|||||||
assert_equal c.mnemonic, "bar"
|
assert_equal c.mnemonic, "bar"
|
||||||
end
|
end
|
||||||
|
|
||||||
should "customers should have Card objects associated with their active_ard property" do
|
|
||||||
@mock.expects(:get).once.returns(test_response(test_customer))
|
|
||||||
c = Stripe::Customer.retrieve("test_customer")
|
|
||||||
assert c.active_card.kind_of?(Stripe::StripeObject) && c.active_card.object == 'card'
|
|
||||||
end
|
|
||||||
|
|
||||||
should "create should return a new customer" do
|
should "create should return a new customer" do
|
||||||
@mock.expects(:post).once.returns(test_response(test_customer))
|
@mock.expects(:post).once.returns(test_response(test_customer))
|
||||||
c = Stripe::Customer.create
|
c = Stripe::Customer.create
|
||||||
@ -512,8 +506,51 @@ class TestStripeRuby < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
context "card tests" do
|
context "card tests" do
|
||||||
|
should "be able to create a new card for a customer" do
|
||||||
|
@mock.expects(:get).once.returns(test_response(test_customer))
|
||||||
|
customer = Stripe::Customer.retrieve("test_customer")
|
||||||
|
|
||||||
|
@mock.expects(:post).once.returns(test_response(test_card))
|
||||||
|
card = customer.cards.create(:card => 'card')
|
||||||
|
assert card.kind_of? Stripe::Card
|
||||||
|
end
|
||||||
|
|
||||||
|
should "be able to retrieve a card for a customer" do
|
||||||
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/c_test_customer", nil, nil).returns(test_response(test_customer))
|
||||||
|
customer = Stripe::Customer.retrieve("c_test_customer")
|
||||||
|
|
||||||
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/cards/cc_test_card", nil, nil).returns(test_response(test_card))
|
||||||
|
card = customer.cards.retrieve("cc_test_card")
|
||||||
|
assert card.kind_of? Stripe::Card
|
||||||
|
end
|
||||||
|
|
||||||
|
should "be able to list all cards for a customer" do
|
||||||
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/c_test_customer", nil, nil).returns(test_response(test_customer))
|
||||||
|
customer = Stripe::Customer.retrieve("c_test_customer")
|
||||||
|
|
||||||
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/cards", nil, nil).returns(test_response(test_card_array("c_test_customer")))
|
||||||
|
cards = customer.cards.all()
|
||||||
|
assert cards.data.kind_of? Array
|
||||||
|
cards.each do |card|
|
||||||
|
assert card.kind_of?(Stripe::Card)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
should "be able to update a card for a customer" do
|
||||||
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/c_test_customer", nil, nil).returns(test_response(test_customer))
|
||||||
|
customer = Stripe::Customer.retrieve("c_test_customer")
|
||||||
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/cards/cc_test_card", nil, nil).returns(test_response(test_card))
|
||||||
|
card = customer.cards.retrieve("cc_test_card")
|
||||||
|
|
||||||
|
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/cards/cc_test_card", nil, "address_zip=zippy").returns(test_response(test_card(:address_zip => 'zippy')))
|
||||||
|
card.address_zip = "zippy"
|
||||||
|
card.save
|
||||||
|
|
||||||
|
assert_equal "zippy", card.address_zip
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
context "coupon tests" do
|
context "coupon tests" do
|
||||||
should "create should return a new coupon" do
|
should "create should return a new coupon" do
|
||||||
@mock.expects(:post).once.returns(test_response(test_coupon))
|
@mock.expects(:post).once.returns(test_response(test_coupon))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user