Add tests for update (#1150)

* Add tests for update

* Apply suggestions from code review

Co-authored-by: Richard Marmorstein <52928443+richardm-stripe@users.noreply.github.com>

* Lint

Co-authored-by: Richard Marmorstein <52928443+richardm-stripe@users.noreply.github.com>
This commit is contained in:
anniel-stripe 2022-11-23 11:20:04 -08:00 committed by GitHub
parent 24312f9f49
commit a96e6f3b42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -314,7 +314,7 @@ module Stripe
assert_equal c.created, 12_345 assert_equal c.created, 12_345
end 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") stub_request(:post, "#{Stripe.api_base}/v1/customers/cus_123")
.with(body: { "description" => "another_mn" }) .with(body: { "description" => "another_mn" })
.to_return(body: JSON.generate(customer_fixture)) .to_return(body: JSON.generate(customer_fixture))
@ -323,7 +323,15 @@ module Stripe
c.save c.save
end 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") stub_request(:post, "#{Stripe.api_base}/v1/customers/cus_123")
.with(body: { "description" => "another_mn" }) .with(body: { "description" => "another_mn" })
.to_return(body: JSON.generate(customer_fixture)) .to_return(body: JSON.generate(customer_fixture))
@ -333,14 +341,21 @@ module Stripe
assert_equal false, c.livemode assert_equal false, c.livemode
end 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 c = Stripe::Customer.new
assert_raises TypeError do assert_raises TypeError do
c.save({}, api_key: nil) c.save({}, api_key: nil)
end end
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") stub_request(:post, "#{Stripe.api_base}/v1/customers")
.with(headers: { "Authorization" => "Bearer sk_test_local" }) .with(headers: { "Authorization" => "Bearer sk_test_local" })
.to_return(body: JSON.generate(customer_fixture)) .to_return(body: JSON.generate(customer_fixture))
@ -349,6 +364,14 @@ module Stripe
assert_equal false, c.livemode assert_equal false, c.livemode
end 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 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") stub_request(:delete, "#{Stripe.api_base}/v1/customers/cus_123")
.to_return(body: JSON.generate("id" => "cus_123", "deleted" => true)) .to_return(body: JSON.generate("id" => "cus_123", "deleted" => true))
@ -385,7 +408,7 @@ module Stripe
c.save c.save
end end
should "add key to nested objects" do should "add key to nested objects on save" do
acct = Stripe::Account.construct_from(id: "myid", acct = Stripe::Account.construct_from(id: "myid",
legal_entity: { legal_entity: {
size: "l", size: "l",
@ -401,6 +424,14 @@ module Stripe
acct.save acct.save
end 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 should "save nothing if nothing changes" do
acct = Stripe::Account.construct_from(id: "acct_id", acct = Stripe::Account.construct_from(id: "acct_id",
metadata: { metadata: {
@ -429,7 +460,7 @@ module Stripe
ch.save ch.save
end end
should "correctly handle replaced nested objects" do should "correctly handle replaced nested objects on save" do
acct = Stripe::Account.construct_from( acct = Stripe::Account.construct_from(
id: "acct_123", id: "acct_123",
company: { company: {
@ -449,7 +480,7 @@ module Stripe
acct.save acct.save
end end
should "correctly handle array setting" do should "correctly handle array setting on save" do
acct = Stripe::Account.construct_from(id: "myid", acct = Stripe::Account.construct_from(id: "myid",
legal_entity: {}) legal_entity: {})
@ -461,7 +492,7 @@ module Stripe
acct.save acct.save
end end
should "correctly handle array insertion" do should "correctly handle array insertion on save" do
acct = Stripe::Account.construct_from(id: "myid", acct = Stripe::Account.construct_from(id: "myid",
legal_entity: { legal_entity: {
additional_owners: [], additional_owners: [],
@ -478,7 +509,7 @@ module Stripe
acct.save acct.save
end end
should "correctly handle array updates" do should "correctly handle array updates on save" do
acct = Stripe::Account.construct_from(id: "myid", acct = Stripe::Account.construct_from(id: "myid",
legal_entity: { legal_entity: {
additional_owners: [{ first_name: "Bob" }, { first_name: "Jane" }], additional_owners: [{ first_name: "Bob" }, { first_name: "Jane" }],
@ -495,7 +526,7 @@ module Stripe
acct.save acct.save
end end
should "correctly handle array noops" do should "correctly handle array noops on save" do
acct = Stripe::Account.construct_from(id: "myid", acct = Stripe::Account.construct_from(id: "myid",
legal_entity: { legal_entity: {
additional_owners: [{ first_name: "Bob" }], additional_owners: [{ first_name: "Bob" }],
@ -509,7 +540,7 @@ module Stripe
acct.save acct.save
end end
should "correctly handle hash noops" do should "correctly handle hash noops on save" do
acct = Stripe::Account.construct_from(id: "myid", acct = Stripe::Account.construct_from(id: "myid",
legal_entity: { legal_entity: {
address: { line1: "1 Two Three" }, address: { line1: "1 Two Three" },