mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-07-06 00:00:30 -04:00
Compare commits
10 Commits
c261f6bbb6
...
586e685e63
Author | SHA1 | Date | |
---|---|---|---|
|
586e685e63 | ||
|
3b5c725539 | ||
|
ea91a6f0b9 | ||
|
21f31edff4 | ||
|
a11f1ffd2a | ||
|
4bd92239d5 | ||
|
b87cfbec98 | ||
|
a96e6f3b42 | ||
|
24312f9f49 | ||
|
a0935c246d |
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
ruby-version: [2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1, jruby-9.2.16.0, truffleruby-head]
|
||||
ruby-version: [2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1, jruby-9.4.0.0, truffleruby-head]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Ruby
|
||||
|
13
CHANGELOG.md
13
CHANGELOG.md
@ -1,5 +1,18 @@
|
||||
# Changelog
|
||||
|
||||
## 8.1.0-beta.1 - 2022-12-08
|
||||
* [#1153](https://github.com/stripe/stripe-ruby/pull/1153) API Updates for beta branch
|
||||
* Updated stable APIs to the latest version
|
||||
* [#1146](https://github.com/stripe/stripe-ruby/pull/1146) API Updates for beta branch
|
||||
* Updated stable APIs to the latest version
|
||||
|
||||
## 8.0.0 - 2022-11-16
|
||||
* [#1144](https://github.com/stripe/stripe-ruby/pull/1144) Next major release changes
|
||||
|
||||
Breaking changes that arose during code generation of the library that we postponed for the next major version. For changes to the Stripe products, read more at https://stripe.com/docs/upgrades#2022-11-15.
|
||||
|
||||
"⚠️" symbol highlights breaking changes.
|
||||
|
||||
## 7.2.0-beta.5 - 2022-11-02
|
||||
* [#1139](https://github.com/stripe/stripe-ruby/pull/1139) API Updates for beta branch
|
||||
* Updated beta APIs to the latest stable version
|
||||
|
@ -1 +1 @@
|
||||
v205
|
||||
v212
|
@ -33,6 +33,9 @@ module Stripe
|
||||
end
|
||||
end
|
||||
|
||||
# The `save` method is DEPRECATED and will be removed in a future major
|
||||
# version of the library. Use the `update` method on the resource instead.
|
||||
#
|
||||
# Creates or updates an API resource.
|
||||
#
|
||||
# If the resource doesn't yet have an assigned ID and the resource is one
|
||||
@ -68,6 +71,8 @@ module Stripe
|
||||
resp, opts = execute_resource_request(:post, save_url, values, opts)
|
||||
initialize_from(resp.data, opts)
|
||||
end
|
||||
extend Gem::Deprecate
|
||||
deprecate :save, :update, 2022, 11
|
||||
|
||||
def self.included(base)
|
||||
# Set `metadata` as additive so that when it's set directly we remember
|
||||
|
@ -3,6 +3,6 @@
|
||||
|
||||
module Stripe
|
||||
module ApiVersion
|
||||
CURRENT = "2022-08-01"
|
||||
CURRENT = "2022-11-15"
|
||||
end
|
||||
end
|
||||
|
@ -92,7 +92,6 @@ module Stripe
|
||||
SetupIntent::OBJECT_NAME => SetupIntent,
|
||||
ShippingRate::OBJECT_NAME => ShippingRate,
|
||||
Sigma::ScheduledQueryRun::OBJECT_NAME => Sigma::ScheduledQueryRun,
|
||||
SKU::OBJECT_NAME => SKU,
|
||||
Source::OBJECT_NAME => Source,
|
||||
SourceTransaction::OBJECT_NAME => SourceTransaction,
|
||||
Subscription::OBJECT_NAME => Subscription,
|
||||
|
@ -79,7 +79,6 @@ require "stripe/resources/setup_attempt"
|
||||
require "stripe/resources/setup_intent"
|
||||
require "stripe/resources/shipping_rate"
|
||||
require "stripe/resources/sigma/scheduled_query_run"
|
||||
require "stripe/resources/sku"
|
||||
require "stripe/resources/source"
|
||||
require "stripe/resources/source_transaction"
|
||||
require "stripe/resources/subscription"
|
||||
|
@ -6,10 +6,6 @@ module Stripe
|
||||
# but not yet refunded. Funds will be refunded to the credit or debit card that
|
||||
# was originally charged.
|
||||
#
|
||||
# Stripe Tax users with recurring payments and invoices can create [Credit Notes](https://stripe.com/docs/api/credit_notes),
|
||||
# which reduce overall tax liability because tax is correctly recalculated and
|
||||
# apportioned to the related invoice.
|
||||
#
|
||||
# Related guide: [Refunds](https://stripe.com/docs/refunds).
|
||||
class Refund < APIResource
|
||||
extend Stripe::APIOperations::Create
|
||||
|
@ -1,19 +0,0 @@
|
||||
# File generated from our OpenAPI spec
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Stripe
|
||||
# Stores representations of [stock keeping units](http://en.wikipedia.org/wiki/Stock_keeping_unit).
|
||||
# SKUs describe specific product variations, taking into account any combination of: attributes,
|
||||
# currency, and cost. For example, a product may be a T-shirt, whereas a specific SKU represents
|
||||
# the `size: large`, `color: red` version of that shirt.
|
||||
#
|
||||
# Can also be used to manage inventory.
|
||||
class SKU < APIResource
|
||||
extend Stripe::APIOperations::Create
|
||||
include Stripe::APIOperations::Delete
|
||||
extend Stripe::APIOperations::List
|
||||
include Stripe::APIOperations::Save
|
||||
|
||||
OBJECT_NAME = "sku"
|
||||
end
|
||||
end
|
@ -50,31 +50,6 @@ module Stripe
|
||||
end
|
||||
|
||||
save_nested_resource :source
|
||||
def delete(params = {}, opts = {})
|
||||
request_stripe_object(
|
||||
method: :delete,
|
||||
path: format("/v1/subscriptions/%<subscription_exposed_id>s", { subscription_exposed_id: CGI.escape(self["id"]) }),
|
||||
params: params,
|
||||
opts: opts
|
||||
)
|
||||
end
|
||||
|
||||
def self.delete(subscription_exposed_id, params = {}, opts = {})
|
||||
request_stripe_object(
|
||||
method: :delete,
|
||||
path: format("/v1/subscriptions/%<subscription_exposed_id>s", { subscription_exposed_id: CGI.escape(subscription_exposed_id) }),
|
||||
params: params,
|
||||
opts: opts
|
||||
)
|
||||
end
|
||||
|
||||
extend Gem::Deprecate
|
||||
deprecate :delete, "Stripe::Subscription.cancel", 2022, 7
|
||||
|
||||
class << self
|
||||
extend Gem::Deprecate
|
||||
deprecate :delete, "Stripe::Subscription#cancel", 2022, 7
|
||||
end
|
||||
|
||||
def self.search(params = {}, opts = {})
|
||||
_search("/v1/subscriptions/search", params, opts)
|
||||
|
@ -1,5 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Stripe
|
||||
VERSION = "7.2.0-beta.5"
|
||||
VERSION = "8.1.0-beta.1"
|
||||
end
|
||||
|
@ -314,7 +314,7 @@ module Stripe
|
||||
assert_equal c.created, 12_345
|
||||
end
|
||||
|
||||
should "updating an object should issue a POST request with only the changed properties" do
|
||||
should "saving an object should issue a POST request with only the changed properties" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/customers/cus_123")
|
||||
.with(body: { "description" => "another_mn" })
|
||||
.to_return(body: JSON.generate(customer_fixture))
|
||||
@ -323,7 +323,15 @@ module Stripe
|
||||
c.save
|
||||
end
|
||||
|
||||
should "updating should merge in returned properties" do
|
||||
should "updating an object should issue a POST request with the specified properties" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/customers/cus_123")
|
||||
.with(body: { "description" => "another_mn" })
|
||||
.to_return(body: JSON.generate(customer_fixture))
|
||||
Stripe::Customer.construct_from(customer_fixture)
|
||||
Stripe::Customer.update("cus_123", { description: "another_mn" })
|
||||
end
|
||||
|
||||
should "saving should merge in returned properties" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/customers/cus_123")
|
||||
.with(body: { "description" => "another_mn" })
|
||||
.to_return(body: JSON.generate(customer_fixture))
|
||||
@ -333,14 +341,21 @@ module Stripe
|
||||
assert_equal false, c.livemode
|
||||
end
|
||||
|
||||
should "updating should fail if api_key is overwritten with nil" do
|
||||
should "saving should fail if api_key is overwritten with nil" do
|
||||
c = Stripe::Customer.new
|
||||
assert_raises TypeError do
|
||||
c.save({}, api_key: nil)
|
||||
end
|
||||
end
|
||||
|
||||
should "updating should use the supplied api_key" do
|
||||
should "updating should fail if api_key is nil" do
|
||||
Stripe::Customer.new("cus_123")
|
||||
assert_raises TypeError do
|
||||
Stripe::Customer.update("cus_123", {}, { api_key: nil })
|
||||
end
|
||||
end
|
||||
|
||||
should "saving should use the supplied api_key" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/customers")
|
||||
.with(headers: { "Authorization" => "Bearer sk_test_local" })
|
||||
.to_return(body: JSON.generate(customer_fixture))
|
||||
@ -349,6 +364,14 @@ module Stripe
|
||||
assert_equal false, c.livemode
|
||||
end
|
||||
|
||||
should "updating should use the supplied api_key" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/customers")
|
||||
.with(headers: { "Authorization" => "Bearer sk_test_local" })
|
||||
.to_return(body: JSON.generate(customer_fixture))
|
||||
Stripe::Customer.new("cus_123")
|
||||
Stripe::Customer.update("cus_123", {}, api_key: "sk_test_local")
|
||||
end
|
||||
|
||||
should "deleting should send no props and result in an object that has no props other deleted" do
|
||||
stub_request(:delete, "#{Stripe.api_base}/v1/customers/cus_123")
|
||||
.to_return(body: JSON.generate("id" => "cus_123", "deleted" => true))
|
||||
@ -385,7 +408,7 @@ module Stripe
|
||||
c.save
|
||||
end
|
||||
|
||||
should "add key to nested objects" do
|
||||
should "add key to nested objects on save" do
|
||||
acct = Stripe::Account.construct_from(id: "myid",
|
||||
legal_entity: {
|
||||
size: "l",
|
||||
@ -401,6 +424,14 @@ module Stripe
|
||||
acct.save
|
||||
end
|
||||
|
||||
should "update with a nested object" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/accounts/myid")
|
||||
.with(body: { business_profile: { name: "Bob" } })
|
||||
.to_return(body: JSON.generate("id" => "myid"))
|
||||
|
||||
Stripe::Account.update("myid", { business_profile: { name: "Bob" } })
|
||||
end
|
||||
|
||||
should "save nothing if nothing changes" do
|
||||
acct = Stripe::Account.construct_from(id: "acct_id",
|
||||
metadata: {
|
||||
@ -429,7 +460,7 @@ module Stripe
|
||||
ch.save
|
||||
end
|
||||
|
||||
should "correctly handle replaced nested objects" do
|
||||
should "correctly handle replaced nested objects on save" do
|
||||
acct = Stripe::Account.construct_from(
|
||||
id: "acct_123",
|
||||
company: {
|
||||
@ -449,7 +480,7 @@ module Stripe
|
||||
acct.save
|
||||
end
|
||||
|
||||
should "correctly handle array setting" do
|
||||
should "correctly handle array setting on save" do
|
||||
acct = Stripe::Account.construct_from(id: "myid",
|
||||
legal_entity: {})
|
||||
|
||||
@ -461,7 +492,7 @@ module Stripe
|
||||
acct.save
|
||||
end
|
||||
|
||||
should "correctly handle array insertion" do
|
||||
should "correctly handle array insertion on save" do
|
||||
acct = Stripe::Account.construct_from(id: "myid",
|
||||
legal_entity: {
|
||||
additional_owners: [],
|
||||
@ -478,7 +509,7 @@ module Stripe
|
||||
acct.save
|
||||
end
|
||||
|
||||
should "correctly handle array updates" do
|
||||
should "correctly handle array updates on save" do
|
||||
acct = Stripe::Account.construct_from(id: "myid",
|
||||
legal_entity: {
|
||||
additional_owners: [{ first_name: "Bob" }, { first_name: "Jane" }],
|
||||
@ -495,7 +526,7 @@ module Stripe
|
||||
acct.save
|
||||
end
|
||||
|
||||
should "correctly handle array noops" do
|
||||
should "correctly handle array noops on save" do
|
||||
acct = Stripe::Account.construct_from(id: "myid",
|
||||
legal_entity: {
|
||||
additional_owners: [{ first_name: "Bob" }],
|
||||
@ -509,7 +540,7 @@ module Stripe
|
||||
acct.save
|
||||
end
|
||||
|
||||
should "correctly handle hash noops" do
|
||||
should "correctly handle hash noops on save" do
|
||||
acct = Stripe::Account.construct_from(id: "myid",
|
||||
legal_entity: {
|
||||
address: { line1: "1 Two Three" },
|
||||
|
@ -1070,63 +1070,6 @@ module Stripe
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/mandates/mandate_xxxxxxxxxxxxx?"
|
||||
end
|
||||
end
|
||||
context "Order.cancel" do
|
||||
should "support requests with args: order" do
|
||||
Stripe::Order.cancel("order_xyz")
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/orders/order_xyz/cancel?"
|
||||
end
|
||||
end
|
||||
context "Order.create" do
|
||||
should "support requests with args: description, currency, line_items" do
|
||||
Stripe::Order.create(
|
||||
{
|
||||
description: "description",
|
||||
currency: "usd",
|
||||
line_items: [{ description: "my line item" }],
|
||||
}
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/orders"
|
||||
end
|
||||
end
|
||||
context "Order.list" do
|
||||
should "support requests with args: limit" do
|
||||
Stripe::Order.list({ limit: 3 })
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/orders?limit=3"
|
||||
end
|
||||
end
|
||||
context "Order.list_line_items" do
|
||||
should "support requests with args: order" do
|
||||
Stripe::Order.list_line_items("order_xyz")
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/orders/order_xyz/line_items?"
|
||||
end
|
||||
end
|
||||
context "Order.reopen" do
|
||||
should "support requests with args: order" do
|
||||
Stripe::Order.reopen("order_xyz")
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/orders/order_xyz/reopen?"
|
||||
end
|
||||
end
|
||||
context "Order.retrieve" do
|
||||
should "support requests with args: order" do
|
||||
Stripe::Order.retrieve("order_xyz")
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/orders/order_xyz?"
|
||||
end
|
||||
end
|
||||
context "Order.submit" do
|
||||
should "support requests with args: order, expected_total" do
|
||||
Stripe::Order.submit("order_xyz", { expected_total: 100 })
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/orders/order_xyz/submit"
|
||||
end
|
||||
end
|
||||
context "Order.update" do
|
||||
should "support requests with args: order, metadata, ip_address" do
|
||||
Stripe::Order.update(
|
||||
"order_xyz",
|
||||
{ metadata: { reference_number: "123" }, ip_address: "0.0.0.0" }
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/orders/order_xyz"
|
||||
end
|
||||
end
|
||||
context "PaymentIntent.apply_customer_balance" do
|
||||
should "support requests with args: id" do
|
||||
Stripe::PaymentIntent.apply_customer_balance("pi_xxxxxxxxxxxxx")
|
||||
@ -1872,44 +1815,6 @@ module Stripe
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/sigma/scheduled_query_runs/sqr_xxxxxxxxxxxxx?"
|
||||
end
|
||||
end
|
||||
context "SKU.create" do
|
||||
should "support requests with args: attributes, price, currency, inventory, product" do
|
||||
Stripe::SKU.create(
|
||||
{
|
||||
attributes: { size: "Medium", gender: "Unisex" },
|
||||
price: 1500,
|
||||
currency: "usd",
|
||||
inventory: { type: "finite", quantity: 500 },
|
||||
product: "prod_xxxxxxxxxxxxx",
|
||||
}
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/skus"
|
||||
end
|
||||
end
|
||||
context "SKU.delete" do
|
||||
should "support requests with args: id" do
|
||||
Stripe::SKU.delete("sku_xxxxxxxxxxxxx")
|
||||
assert_requested :delete, "#{Stripe.api_base}/v1/skus/sku_xxxxxxxxxxxxx?"
|
||||
end
|
||||
end
|
||||
context "SKU.list" do
|
||||
should "support requests with args: limit" do
|
||||
Stripe::SKU.list({ limit: 3 })
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/skus?limit=3"
|
||||
end
|
||||
end
|
||||
context "SKU.retrieve" do
|
||||
should "support requests with args: id" do
|
||||
Stripe::SKU.retrieve("sku_xxxxxxxxxxxxx")
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/skus/sku_xxxxxxxxxxxxx?"
|
||||
end
|
||||
end
|
||||
context "SKU.update" do
|
||||
should "support requests with args: metadata, id" do
|
||||
Stripe::SKU.update("sku_xxxxxxxxxxxxx", { metadata: { order_id: "6735" } })
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/skus/sku_xxxxxxxxxxxxx"
|
||||
end
|
||||
end
|
||||
context "Source.retrieve" do
|
||||
should "support requests with args: id" do
|
||||
Stripe::Source.retrieve("src_xxxxxxxxxxxxx")
|
||||
|
@ -1,60 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require ::File.expand_path("../test_helper", __dir__)
|
||||
|
||||
module Stripe
|
||||
class SKUTest < Test::Unit::TestCase
|
||||
should "be listable" do
|
||||
skus = Stripe::SKU.list
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/skus"
|
||||
assert skus.data.is_a?(Array)
|
||||
assert skus.data[0].is_a?(Stripe::SKU)
|
||||
end
|
||||
|
||||
should "be retrievable" do
|
||||
sku = Stripe::SKU.retrieve("sku_123")
|
||||
assert_requested :get, "#{Stripe.api_base}/v1/skus/sku_123"
|
||||
assert sku.is_a?(Stripe::SKU)
|
||||
end
|
||||
|
||||
should "be creatable" do
|
||||
_ = Stripe::SKU.create(
|
||||
currency: "USD",
|
||||
inventory: { type: "finite", quantity: 500 },
|
||||
price: 100,
|
||||
product: "prod_123"
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/skus"
|
||||
end
|
||||
|
||||
should "be saveable" do
|
||||
sku = Stripe::SKU.retrieve("sku_123")
|
||||
sku.metadata["key"] = "value"
|
||||
sku.save
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/skus/#{sku.id}"
|
||||
end
|
||||
|
||||
should "be updateable" do
|
||||
sku = Stripe::SKU.update("sku_123", metadata: { foo: "bar" })
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/skus/sku_123"
|
||||
assert sku.is_a?(Stripe::SKU)
|
||||
end
|
||||
|
||||
context "#delete" do
|
||||
should "be deletable" do
|
||||
sku = Stripe::SKU.retrieve("sku_123")
|
||||
sku = sku.delete
|
||||
assert_requested :delete, "#{Stripe.api_base}/v1/skus/#{sku.id}"
|
||||
assert sku.is_a?(Stripe::SKU)
|
||||
end
|
||||
end
|
||||
|
||||
context ".delete" do
|
||||
should "be deletable" do
|
||||
sku = Stripe::SKU.delete("sku_123")
|
||||
assert_requested :delete, "#{Stripe.api_base}/v1/skus/sku_123"
|
||||
assert sku.is_a?(Stripe::SKU)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user