Add Orders.

This commit is contained in:
Rasmus Rygaard 2015-09-13 20:31:29 -07:00
parent 2c08524396
commit 747dac6ea0
6 changed files with 139 additions and 0 deletions

View File

@ -51,6 +51,7 @@ require 'stripe/bitcoin_transaction'
require 'stripe/dispute'
require 'stripe/product'
require 'stripe/sku'
require 'stripe/order'
# Errors
require 'stripe/errors/stripe_error'

19
lib/stripe/order.rb Normal file
View File

@ -0,0 +1,19 @@
module Stripe
class Order < APIResource
include Stripe::APIOperations::List
include Stripe::APIOperations::Create
include Stripe::APIOperations::Update
def pay(params, opts={})
response, opts = request(:post, pay_url, params, opts)
refresh_from(response, opts)
end
private
def pay_url
url + "/pay"
end
end
end

View File

@ -47,6 +47,7 @@ module Stripe
'dispute' => Dispute,
'product' => Product,
'sku' => SKU,
'order' => Order,
}
end

View File

@ -29,6 +29,11 @@ module Stripe
:test => method(:make_product),
:url => "/v1/products/#{make_product()[:id]}"
},
:order => {
:new => Stripe::Order.method(:new),
:test => method(:make_order),
:url => "/v1/orders/#{make_order()[:id]}"
},
}
@base_url = 'https://api.stripe.com'

52
test/stripe/order_test.rb Normal file
View File

@ -0,0 +1,52 @@
require File.expand_path('../../test_helper', __FILE__)
module Stripe
class OrderTest < Test::Unit::TestCase
should "orders should be listable" do
@mock.expects(:get).once.returns(make_response(make_order_array))
orders = Stripe::Order.all
assert orders.data.kind_of?(Array)
orders.each do |order|
assert order.kind_of?(Stripe::Order)
end
end
should "orders should not be deletable" do
assert_raises NoMethodError do
@mock.expects(:get).once.returns(make_response(make_order))
p = Stripe::Order.retrieve("test_order")
p.delete
end
end
should "orders should be updateable" do
@mock.expects(:get).once.returns(make_response(make_order))
@mock.expects(:post).once.returns(make_response(make_order))
p = Stripe::Order.new("test_order")
p.refresh
p.status = "fulfilled"
p.save
end
should "orders should allow metadata updates" do
@mock.expects(:get).once.returns(make_response(make_order))
@mock.expects(:post).once.returns(make_response(make_order))
p = Stripe::Order.new("test_order")
p.refresh
p.metadata['key'] = 'value'
p.save
end
should "pay should pay an order" do
@mock.expects(:get).once.
returns(make_response(make_order(:id => 'or_test_order')))
order = Stripe::Order.retrieve('or_test_order')
@mock.expects(:post).once.
with('https://api.stripe.com/v1/orders/or_test_order/pay', nil, 'token=test_token').
returns(make_response(make_paid_order))
order.pay(token: 'test_token')
assert_equal "paid", order.status
end
end
end

View File

@ -592,5 +592,66 @@ module Stripe
]
}
end
def make_order(params={})
{
:id => "or_16kg0uDAu10Yox5RReNVCthv",
:created => 1442171988,
:updated => nil,
:object => "order",
:livemode => false,
:status => "created",
:metadata => {},
:customer => nil,
:shipping => {
:name => "Jenny Rosen",
:address => {
:line1 => "1234 Main street",
:line2 => nil,
:city => "Anytown",
:state => nil,
:postal_code => "123456",
:country => "US"
},
:phone => nil,
},
:email => nil,
:items => [
{
:parent => "sk_16bHXrDAu10Yox5RU2007dpU",
:object => "order_item",
:type => "sku",
:description => "T-shirt",
:amount => 1500,
:currency => "usd",
:quantity => nil,
}
],
:shipping_methods => nil,
:selected_shipping_method => nil,
:amount => 1500,
:currency => "usd",
:charge => nil,
}.merge(params)
end
def make_order_array(params={})
{
:object => "list",
:url => "/v1/orders",
:data => [
make_order,
make_order,
make_order,
]
}
end
def make_paid_order(params={})
make_order.merge({
:status => "paid",
:charge => make_charge,
}).merge(params)
end
end
end