stripe 1.26.0 → 1.27.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3dee603f6988c8f35b2deeadcf5edcea8ebdc114
4
- data.tar.gz: e038126f33119dd877578663534f490baab820b7
3
+ metadata.gz: 760f0f55706fd57c28bd816239bce54e737af027
4
+ data.tar.gz: f130be8395aa8171a34281613132a4810f4a6933
5
5
  SHA512:
6
- metadata.gz: 8d86d6e937aa2ef7510b94c1a83e91ee72e8a088d940976642333487c5e20358ed29ec8b564f0cacd45903fb1ab8c41463d4c586e09179df58e6b4984e8c6f4e
7
- data.tar.gz: a1fb40b9c610afc152fd6cface2438939b3853194b5568cbaa3b314315b973a394e5664bde1228c5945ffd1b1d7ef177b1c4eb4ad2145140958aa02e2984c52d
6
+ metadata.gz: 811530350758ac6aa6eee05ce63591ac77272e2d0dc66b503d86e3897d79060237352dd3fa1f4b0997b1387e8360dd672e3c82fc9293e644b86636fc31bbdec6
7
+ data.tar.gz: daa6cad45b40d685193cc63b90fbcbf5f51967d34d8f5b63e095200958ff9902d0b99edc7ea40b19bcab26697aff6517a75e26c90f768083c04ebc04215b0538
@@ -1,3 +1,7 @@
1
+ === 1.27.0 2015-09-14
2
+
3
+ * Add Orders, Products, and SKUs for Relay.
4
+
1
5
  === 1.26.0 2015-09-11
2
6
 
3
7
  * Add support for 429 Rate Limited response
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.26.0
1
+ 1.27.0
@@ -49,6 +49,9 @@ require 'stripe/application_fee_refund'
49
49
  require 'stripe/bitcoin_receiver'
50
50
  require 'stripe/bitcoin_transaction'
51
51
  require 'stripe/dispute'
52
+ require 'stripe/product'
53
+ require 'stripe/sku'
54
+ require 'stripe/order'
52
55
 
53
56
  # Errors
54
57
  require 'stripe/errors/stripe_error'
@@ -2,12 +2,14 @@ module Stripe
2
2
  module APIOperations
3
3
  module Update
4
4
  def save(params={})
5
+ # Let the caller override the URL but avoid serializing it.
6
+ req_url = params.delete(:req_url) || url
5
7
  values = self.class.serialize_params(self).merge(params)
6
8
 
7
9
  if values.length > 0
8
10
  values.delete(:id)
9
11
 
10
- response, opts = request(:post, url, values)
12
+ response, opts = request(:post, req_url, values)
11
13
  refresh_from(response, opts)
12
14
  end
13
15
  self
@@ -0,0 +1,19 @@
1
+ module Stripe
2
+ class Order < APIResource
3
+ include Stripe::APIOperations::List
4
+ include Stripe::APIOperations::Create
5
+ include Stripe::APIOperations::Update
6
+
7
+ def pay(params, opts={})
8
+ response, opts = request(:post, pay_url, params, opts)
9
+ refresh_from(response, opts)
10
+ end
11
+
12
+ private
13
+
14
+ def pay_url
15
+ url + "/pay"
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ module Stripe
2
+ class Product < APIResource
3
+ include Stripe::APIOperations::List
4
+ include Stripe::APIOperations::Create
5
+ include Stripe::APIOperations::Update
6
+
7
+ # Keep APIResource#url as `api_url` to avoid letting the external URL
8
+ # replace the Stripe URL.
9
+ alias_method :api_url, :url
10
+
11
+ # Override Stripe::APIOperations::Update#save to explicitly pass URL.
12
+ def save
13
+ super(req_url: api_url)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ module Stripe
2
+ class SKU < APIResource
3
+ include Stripe::APIOperations::List
4
+ include Stripe::APIOperations::Create
5
+ include Stripe::APIOperations::Update
6
+
7
+ end
8
+ end
@@ -123,7 +123,7 @@ module Stripe
123
123
  new_keys = update.keys.map(&:to_sym)
124
124
 
125
125
  # remove keys at the server, but not known locally
126
- if @original_values.include?(key)
126
+ if @original_values[key]
127
127
  keys_to_unset = @original_values[key].keys - new_keys
128
128
  keys_to_unset.each {|key| update[key] = ''}
129
129
  end
@@ -44,7 +44,10 @@ module Stripe
44
44
  'transfer_reversal' => Reversal,
45
45
  'bitcoin_receiver' => BitcoinReceiver,
46
46
  'bitcoin_transaction' => BitcoinTransaction,
47
- 'dispute' => Dispute
47
+ 'dispute' => Dispute,
48
+ 'product' => Product,
49
+ 'sku' => SKU,
50
+ 'order' => Order,
48
51
  }
49
52
  end
50
53
 
@@ -1,3 +1,3 @@
1
1
  module Stripe
2
- VERSION = '1.26.0'
2
+ VERSION = '1.27.0'
3
3
  end
@@ -23,7 +23,22 @@ module Stripe
23
23
  :new => Stripe::Transfer.method(:new),
24
24
  :test => method(:make_transfer),
25
25
  :url => "/v1/transfers/#{make_transfer()[:id]}"
26
- }
26
+ },
27
+ :product => {
28
+ :new => Stripe::Product.method(:new),
29
+ :test => method(:make_product),
30
+ :url => "/v1/products/#{make_product()[:id]}"
31
+ },
32
+ :order => {
33
+ :new => Stripe::Order.method(:new),
34
+ :test => method(:make_order),
35
+ :url => "/v1/orders/#{make_order()[:id]}"
36
+ },
37
+ :sku => {
38
+ :new => Stripe::SKU.method(:new),
39
+ :test => method(:make_sku),
40
+ :url => "/v1/skus/#{make_sku()[:id]}"
41
+ },
27
42
  }
28
43
 
29
44
  @base_url = 'https://api.stripe.com'
@@ -0,0 +1,52 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class OrderTest < Test::Unit::TestCase
5
+ should "orders should be listable" do
6
+ @mock.expects(:get).once.returns(make_response(make_order_array))
7
+ orders = Stripe::Order.all
8
+ assert orders.data.kind_of?(Array)
9
+ orders.each do |order|
10
+ assert order.kind_of?(Stripe::Order)
11
+ end
12
+ end
13
+
14
+ should "orders should not be deletable" do
15
+ assert_raises NoMethodError do
16
+ @mock.expects(:get).once.returns(make_response(make_order))
17
+ p = Stripe::Order.retrieve("test_order")
18
+ p.delete
19
+ end
20
+ end
21
+
22
+ should "orders should be updateable" do
23
+ @mock.expects(:get).once.returns(make_response(make_order))
24
+ @mock.expects(:post).once.returns(make_response(make_order))
25
+ p = Stripe::Order.new("test_order")
26
+ p.refresh
27
+ p.status = "fulfilled"
28
+ p.save
29
+ end
30
+
31
+ should "orders should allow metadata updates" do
32
+ @mock.expects(:get).once.returns(make_response(make_order))
33
+ @mock.expects(:post).once.returns(make_response(make_order))
34
+ p = Stripe::Order.new("test_order")
35
+ p.refresh
36
+ p.metadata['key'] = 'value'
37
+ p.save
38
+ end
39
+
40
+ should "pay should pay an order" do
41
+ @mock.expects(:get).once.
42
+ returns(make_response(make_order(:id => 'or_test_order')))
43
+ order = Stripe::Order.retrieve('or_test_order')
44
+
45
+ @mock.expects(:post).once.
46
+ with('https://api.stripe.com/v1/orders/or_test_order/pay', nil, 'token=test_token').
47
+ returns(make_response(make_paid_order))
48
+ order.pay(token: 'test_token')
49
+ assert_equal "paid", order.status
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,41 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class ProductTest < Test::Unit::TestCase
5
+ should "products should be listable" do
6
+ @mock.expects(:get).once.returns(make_response(make_product_array))
7
+ products = Stripe::Product.all
8
+ assert products.data.kind_of?(Array)
9
+ products.each do |product|
10
+ assert product.kind_of?(Stripe::Product)
11
+ end
12
+ end
13
+
14
+ should "products should not be deletable" do
15
+ assert_raises NoMethodError do
16
+ @mock.expects(:get).once.returns(make_response(make_product))
17
+ p = Stripe::Product.retrieve("test_product")
18
+ p.delete
19
+ end
20
+ end
21
+
22
+ should "products should be updateable" do
23
+ @mock.expects(:get).once.returns(make_response(make_product))
24
+ @mock.expects(:post).once.returns(make_response(make_product))
25
+ p = Stripe::Product.new("test_product")
26
+ p.refresh
27
+ p.description = "New product description"
28
+ p.save
29
+ end
30
+
31
+ should "products should allow metadata updates" do
32
+ @mock.expects(:get).once.returns(make_response(make_product))
33
+ @mock.expects(:post).once.returns(make_response(make_product))
34
+ p = Stripe::Product.new("test_product")
35
+ p.refresh
36
+ p.metadata['key'] = 'value'
37
+ p.save
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class SKUTest < Test::Unit::TestCase
5
+ should "SKUs should be listable" do
6
+ @mock.expects(:get).once.
7
+ returns(make_response(make_sku_array("test_product")))
8
+ skus = Stripe::SKU.all
9
+ assert skus.data.kind_of? Array
10
+ skus.each do |sku|
11
+ assert sku.kind_of?(Stripe::SKU)
12
+ end
13
+ end
14
+
15
+ should "SKUs should not be deletable" do
16
+ assert_raises NoMethodError do
17
+ @mock.expects(:get).once.returns(make_response(make_sku))
18
+ p = Stripe::SKU.retrieve("test_product")
19
+ p.delete
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -533,5 +533,134 @@ module Stripe
533
533
  :id => "di_test_coupon"
534
534
  }
535
535
  end
536
+
537
+ def make_product(params={})
538
+ {
539
+ :id => "pr_test_product",
540
+ :created => 1441992477,
541
+ :updated => 1441992477,
542
+ :object => "product",
543
+ :livemode => false,
544
+ :name => "Test Product",
545
+ :caption => "Comfy comfu",
546
+ :description => "Testing",
547
+ :active => true,
548
+ :attributes => [],
549
+ :shippable => true,
550
+ :metadata => {},
551
+ :url => "http://example.com/product",
552
+ :package_dimensions => nil,
553
+ :images => [],
554
+ :skus => make_sku_array("pr_test_product")
555
+ }.merge(params)
556
+ end
557
+
558
+ def make_product_array
559
+ {
560
+ :object => "list",
561
+ :url => "/v1/products",
562
+ :data => [
563
+ make_product,
564
+ make_product,
565
+ make_product,
566
+ ],
567
+ }
568
+ end
569
+
570
+ def make_sku(params={})
571
+ {
572
+ :id => "12345",
573
+ :created => 1441992494,
574
+ :updated => 1441992494,
575
+ :object => "sku",
576
+ :livemode => false,
577
+ :product => "pr_test_product",
578
+ :image => nil,
579
+ :active => true,
580
+ :price => 999,
581
+ :currency => "usd",
582
+ :inventory => {
583
+ :type => "infinite",
584
+ :quantity => nil,
585
+ :value => nil,
586
+ },
587
+ :attributes => {},
588
+ :metadata => {},
589
+ :package_dimensions => nil,
590
+ }.merge(params)
591
+ end
592
+
593
+ def make_sku_array(product_id, params={})
594
+ {
595
+ :object => "list",
596
+ :url => "/v1/skus",
597
+ :data => [
598
+ make_sku(:product => product_id),
599
+ make_sku(:product => product_id),
600
+ make_sku(:product => product_id),
601
+ ]
602
+ }
603
+ end
604
+
605
+ def make_order(params={})
606
+ {
607
+ :id => "or_16kg0uDAu10Yox5RReNVCthv",
608
+ :created => 1442171988,
609
+ :updated => nil,
610
+ :object => "order",
611
+ :livemode => false,
612
+ :status => "created",
613
+ :metadata => {},
614
+ :customer => nil,
615
+ :shipping => {
616
+ :name => "Jenny Rosen",
617
+ :address => {
618
+ :line1 => "1234 Main street",
619
+ :line2 => nil,
620
+ :city => "Anytown",
621
+ :state => nil,
622
+ :postal_code => "123456",
623
+ :country => "US"
624
+ },
625
+ :phone => nil,
626
+ },
627
+ :email => nil,
628
+ :items => [
629
+ {
630
+ :parent => "sk_16bHXrDAu10Yox5RU2007dpU",
631
+ :object => "order_item",
632
+ :type => "sku",
633
+ :description => "T-shirt",
634
+ :amount => 1500,
635
+ :currency => "usd",
636
+ :quantity => nil,
637
+ }
638
+ ],
639
+ :shipping_methods => nil,
640
+ :selected_shipping_method => nil,
641
+ :amount => 1500,
642
+ :currency => "usd",
643
+ :charge => nil,
644
+ }.merge(params)
645
+ end
646
+
647
+ def make_order_array(params={})
648
+ {
649
+ :object => "list",
650
+ :url => "/v1/orders",
651
+ :data => [
652
+ make_order,
653
+ make_order,
654
+ make_order,
655
+ ]
656
+ }
657
+ end
658
+
659
+ def make_paid_order(params={})
660
+ make_order.merge({
661
+ :status => "paid",
662
+ :charge => make_charge,
663
+ }).merge(params)
664
+ end
536
665
  end
537
666
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.26.0
4
+ version: 1.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Boucher
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-11 00:00:00.000000000 Z
12
+ date: 2015-09-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -151,11 +151,14 @@ files:
151
151
  - lib/stripe/invoice.rb
152
152
  - lib/stripe/invoice_item.rb
153
153
  - lib/stripe/list_object.rb
154
+ - lib/stripe/order.rb
154
155
  - lib/stripe/plan.rb
156
+ - lib/stripe/product.rb
155
157
  - lib/stripe/recipient.rb
156
158
  - lib/stripe/refund.rb
157
159
  - lib/stripe/reversal.rb
158
160
  - lib/stripe/singleton_api_resource.rb
161
+ - lib/stripe/sku.rb
159
162
  - lib/stripe/stripe_object.rb
160
163
  - lib/stripe/subscription.rb
161
164
  - lib/stripe/token.rb
@@ -179,9 +182,12 @@ files:
179
182
  - test/stripe/invoice_test.rb
180
183
  - test/stripe/list_object_test.rb
181
184
  - test/stripe/metadata_test.rb
185
+ - test/stripe/order_test.rb
186
+ - test/stripe/product_test.rb
182
187
  - test/stripe/recipient_card_test.rb
183
188
  - test/stripe/refund_test.rb
184
189
  - test/stripe/reversal_test.rb
190
+ - test/stripe/sku_test.rb
185
191
  - test/stripe/stripe_object_test.rb
186
192
  - test/stripe/subscription_test.rb
187
193
  - test/stripe/transfer_test.rb
@@ -229,9 +235,12 @@ test_files:
229
235
  - test/stripe/invoice_test.rb
230
236
  - test/stripe/list_object_test.rb
231
237
  - test/stripe/metadata_test.rb
238
+ - test/stripe/order_test.rb
239
+ - test/stripe/product_test.rb
232
240
  - test/stripe/recipient_card_test.rb
233
241
  - test/stripe/refund_test.rb
234
242
  - test/stripe/reversal_test.rb
243
+ - test/stripe/sku_test.rb
235
244
  - test/stripe/stripe_object_test.rb
236
245
  - test/stripe/subscription_test.rb
237
246
  - test/stripe/transfer_test.rb