stripe 4.9.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +10 -0
  3. data/.rubocop.yml +28 -4
  4. data/.rubocop_todo.yml +11 -22
  5. data/.travis.yml +3 -6
  6. data/.vscode/extensions.json +7 -0
  7. data/.vscode/settings.json +8 -0
  8. data/CHANGELOG.md +102 -2
  9. data/Gemfile +2 -10
  10. data/README.md +96 -40
  11. data/Rakefile +8 -7
  12. data/VERSION +1 -1
  13. data/lib/stripe.rb +64 -85
  14. data/lib/stripe/api_operations/delete.rb +23 -1
  15. data/lib/stripe/api_operations/list.rb +0 -6
  16. data/lib/stripe/api_operations/nested_resource.rb +14 -7
  17. data/lib/stripe/api_operations/request.rb +3 -7
  18. data/lib/stripe/api_operations/save.rb +1 -3
  19. data/lib/stripe/api_resource.rb +50 -2
  20. data/lib/stripe/connection_manager.rb +141 -0
  21. data/lib/stripe/error_object.rb +94 -0
  22. data/lib/stripe/errors.rb +22 -9
  23. data/lib/stripe/list_object.rb +11 -5
  24. data/lib/stripe/multipart_encoder.rb +131 -0
  25. data/lib/stripe/object_types.rb +94 -0
  26. data/lib/stripe/resources.rb +77 -0
  27. data/lib/stripe/{account.rb → resources/account.rb} +49 -27
  28. data/lib/stripe/{account_link.rb → resources/account_link.rb} +1 -1
  29. data/lib/stripe/resources/alipay_account.rb +34 -0
  30. data/lib/stripe/{apple_pay_domain.rb → resources/apple_pay_domain.rb} +1 -1
  31. data/lib/stripe/resources/application_fee.rb +13 -0
  32. data/lib/stripe/resources/application_fee_refund.rb +30 -0
  33. data/lib/stripe/{balance.rb → resources/balance.rb} +1 -1
  34. data/lib/stripe/{balance_transaction.rb → resources/balance_transaction.rb} +1 -5
  35. data/lib/stripe/{bank_account.rb → resources/bank_account.rb} +14 -4
  36. data/lib/stripe/{bitcoin_receiver.rb → resources/bitcoin_receiver.rb} +3 -3
  37. data/lib/stripe/{bitcoin_transaction.rb → resources/bitcoin_transaction.rb} +1 -1
  38. data/lib/stripe/resources/capability.rb +33 -0
  39. data/lib/stripe/{card.rb → resources/card.rb} +12 -4
  40. data/lib/stripe/resources/charge.rb +22 -0
  41. data/lib/stripe/{checkout → resources/checkout}/session.rb +2 -2
  42. data/lib/stripe/{country_spec.rb → resources/country_spec.rb} +1 -1
  43. data/lib/stripe/{coupon.rb → resources/coupon.rb} +2 -2
  44. data/lib/stripe/resources/credit_note.rb +22 -0
  45. data/lib/stripe/resources/customer.rb +35 -0
  46. data/lib/stripe/resources/customer_balance_transaction.rb +30 -0
  47. data/lib/stripe/resources/discount.rb +7 -0
  48. data/lib/stripe/{dispute.rb → resources/dispute.rb} +9 -7
  49. data/lib/stripe/{ephemeral_key.rb → resources/ephemeral_key.rb} +5 -2
  50. data/lib/stripe/{event.rb → resources/event.rb} +1 -1
  51. data/lib/stripe/{exchange_rate.rb → resources/exchange_rate.rb} +1 -1
  52. data/lib/stripe/{file.rb → resources/file.rb} +8 -11
  53. data/lib/stripe/{file_link.rb → resources/file_link.rb} +2 -2
  54. data/lib/stripe/resources/invoice.rb +73 -0
  55. data/lib/stripe/{invoice_item.rb → resources/invoice_item.rb} +2 -2
  56. data/lib/stripe/{invoice_line_item.rb → resources/invoice_line_item.rb} +1 -1
  57. data/lib/stripe/resources/issuing/authorization.rb +33 -0
  58. data/lib/stripe/resources/issuing/card.rb +24 -0
  59. data/lib/stripe/{issuing → resources/issuing}/card_details.rb +1 -1
  60. data/lib/stripe/{issuing → resources/issuing}/cardholder.rb +2 -2
  61. data/lib/stripe/{issuing → resources/issuing}/dispute.rb +2 -2
  62. data/lib/stripe/{issuing → resources/issuing}/transaction.rb +2 -2
  63. data/lib/stripe/resources/login_link.rb +14 -0
  64. data/lib/stripe/resources/order.rb +32 -0
  65. data/lib/stripe/{order_return.rb → resources/order_return.rb} +1 -1
  66. data/lib/stripe/resources/payment_intent.rb +42 -0
  67. data/lib/stripe/resources/payment_method.rb +32 -0
  68. data/lib/stripe/resources/payout.rb +22 -0
  69. data/lib/stripe/{person.rb → resources/person.rb} +8 -3
  70. data/lib/stripe/{plan.rb → resources/plan.rb} +1 -1
  71. data/lib/stripe/{product.rb → resources/product.rb} +3 -3
  72. data/lib/stripe/resources/radar/early_fraud_warning.rb +11 -0
  73. data/lib/stripe/{radar → resources/radar}/value_list.rb +2 -2
  74. data/lib/stripe/{radar → resources/radar}/value_list_item.rb +2 -2
  75. data/lib/stripe/{recipient.rb → resources/recipient.rb} +2 -6
  76. data/lib/stripe/{recipient_transfer.rb → resources/recipient_transfer.rb} +1 -1
  77. data/lib/stripe/{refund.rb → resources/refund.rb} +1 -1
  78. data/lib/stripe/{reporting → resources/reporting}/report_run.rb +2 -2
  79. data/lib/stripe/{reporting → resources/reporting}/report_type.rb +2 -2
  80. data/lib/stripe/resources/reversal.rb +29 -0
  81. data/lib/stripe/resources/review.rb +20 -0
  82. data/lib/stripe/resources/setup_intent.rb +32 -0
  83. data/lib/stripe/{sigma → resources/sigma}/scheduled_query_run.rb +2 -2
  84. data/lib/stripe/{sku.rb → resources/sku.rb} +3 -3
  85. data/lib/stripe/{source.rb → resources/source.rb} +17 -15
  86. data/lib/stripe/{source_transaction.rb → resources/source_transaction.rb} +1 -1
  87. data/lib/stripe/resources/subscription.rb +25 -0
  88. data/lib/stripe/{subscription_item.rb → resources/subscription_item.rb} +5 -2
  89. data/lib/stripe/resources/subscription_schedule.rb +32 -0
  90. data/lib/stripe/resources/tax_id.rb +26 -0
  91. data/lib/stripe/resources/tax_rate.rb +11 -0
  92. data/lib/stripe/{terminal → resources/terminal}/connection_token.rb +2 -2
  93. data/lib/stripe/{terminal → resources/terminal}/location.rb +3 -2
  94. data/lib/stripe/{terminal → resources/terminal}/reader.rb +3 -2
  95. data/lib/stripe/{three_d_secure.rb → resources/three_d_secure.rb} +1 -1
  96. data/lib/stripe/{token.rb → resources/token.rb} +1 -1
  97. data/lib/stripe/resources/topup.rb +22 -0
  98. data/lib/stripe/resources/transfer.rb +26 -0
  99. data/lib/stripe/resources/usage_record.rb +7 -0
  100. data/lib/stripe/{usage_record_summary.rb → resources/usage_record_summary.rb} +1 -1
  101. data/lib/stripe/{webhook_endpoint.rb → resources/webhook_endpoint.rb} +2 -2
  102. data/lib/stripe/singleton_api_resource.rb +3 -1
  103. data/lib/stripe/stripe_client.rb +347 -218
  104. data/lib/stripe/stripe_object.rb +72 -59
  105. data/lib/stripe/stripe_response.rb +53 -21
  106. data/lib/stripe/util.rb +54 -109
  107. data/lib/stripe/version.rb +1 -1
  108. data/lib/stripe/webhook.rb +5 -3
  109. data/stripe.gemspec +14 -5
  110. data/test/stripe/account_link_test.rb +1 -1
  111. data/test/stripe/account_test.rb +193 -32
  112. data/test/stripe/alipay_account_test.rb +1 -1
  113. data/test/stripe/api_operations_test.rb +3 -4
  114. data/test/stripe/api_resource_test.rb +119 -30
  115. data/test/stripe/apple_pay_domain_test.rb +18 -5
  116. data/test/stripe/application_fee_refund_test.rb +1 -1
  117. data/test/stripe/application_fee_test.rb +45 -1
  118. data/test/stripe/balance_test.rb +1 -1
  119. data/test/stripe/balance_transaction_test.rb +20 -0
  120. data/test/stripe/bank_account_test.rb +1 -1
  121. data/test/stripe/capability_test.rb +45 -0
  122. data/test/stripe/charge_test.rb +13 -8
  123. data/test/stripe/checkout/session_test.rb +7 -1
  124. data/test/stripe/connection_manager_test.rb +138 -0
  125. data/test/stripe/country_spec_test.rb +1 -1
  126. data/test/stripe/coupon_test.rb +16 -6
  127. data/test/stripe/credit_note_test.rb +61 -0
  128. data/test/stripe/customer_balance_transaction_test.rb +37 -0
  129. data/test/stripe/customer_card_test.rb +1 -1
  130. data/test/stripe/customer_test.rb +151 -40
  131. data/test/stripe/dispute_test.rb +10 -1
  132. data/test/stripe/ephemeral_key_test.rb +8 -1
  133. data/test/stripe/errors_test.rb +30 -9
  134. data/test/stripe/exchange_rate_test.rb +1 -1
  135. data/test/stripe/file_link_test.rb +1 -1
  136. data/test/stripe/file_test.rb +19 -5
  137. data/test/stripe/invoice_item_test.rb +18 -7
  138. data/test/stripe/invoice_line_item_test.rb +1 -1
  139. data/test/stripe/invoice_test.rb +77 -9
  140. data/test/stripe/issuing/authorization_test.rb +33 -11
  141. data/test/stripe/issuing/card_test.rb +15 -6
  142. data/test/stripe/issuing/cardholder_test.rb +1 -1
  143. data/test/stripe/issuing/dispute_test.rb +1 -1
  144. data/test/stripe/issuing/transaction_test.rb +1 -1
  145. data/test/stripe/list_object_test.rb +1 -17
  146. data/test/stripe/login_link_test.rb +2 -2
  147. data/test/stripe/multipart_encoder_test.rb +130 -0
  148. data/test/stripe/oauth_test.rb +1 -1
  149. data/test/stripe/order_return_test.rb +1 -1
  150. data/test/stripe/order_test.rb +28 -3
  151. data/test/stripe/payment_intent_test.rb +31 -4
  152. data/test/stripe/payment_method_test.rb +84 -0
  153. data/test/stripe/payout_test.rb +8 -1
  154. data/test/stripe/person_test.rb +1 -1
  155. data/test/stripe/plan_test.rb +26 -20
  156. data/test/stripe/product_test.rb +16 -6
  157. data/test/stripe/radar/early_fraud_warning_test.rb +22 -0
  158. data/test/stripe/radar/value_list_item_test.rb +16 -6
  159. data/test/stripe/radar/value_list_test.rb +16 -6
  160. data/test/stripe/recipient_test.rb +18 -5
  161. data/test/stripe/refund_test.rb +1 -1
  162. data/test/stripe/reporting/report_run_test.rb +1 -1
  163. data/test/stripe/reporting/report_type_test.rb +1 -1
  164. data/test/stripe/reversal_test.rb +1 -1
  165. data/test/stripe/review_test.rb +1 -1
  166. data/test/stripe/setup_intent_test.rb +84 -0
  167. data/test/stripe/sigma/scheduled_query_run_test.rb +1 -1
  168. data/test/stripe/sku_test.rb +16 -6
  169. data/test/stripe/source_test.rb +14 -19
  170. data/test/stripe/source_transaction_test.rb +1 -1
  171. data/test/stripe/stripe_client_test.rb +242 -26
  172. data/test/stripe/stripe_object_test.rb +8 -36
  173. data/test/stripe/stripe_response_test.rb +71 -25
  174. data/test/stripe/subscription_item_test.rb +28 -6
  175. data/test/stripe/subscription_schedule_test.rb +19 -1
  176. data/test/stripe/subscription_test.rb +29 -9
  177. data/test/stripe/tax_id_test.rb +31 -0
  178. data/test/stripe/tax_rate_test.rb +43 -0
  179. data/test/stripe/terminal/connection_token_test.rb +1 -1
  180. data/test/stripe/terminal/location_test.rb +18 -1
  181. data/test/stripe/terminal/reader_test.rb +18 -1
  182. data/test/stripe/three_d_secure_test.rb +1 -1
  183. data/test/stripe/topup_test.rb +9 -1
  184. data/test/stripe/transfer_test.rb +46 -1
  185. data/test/stripe/usage_record_summary_test.rb +1 -1
  186. data/test/stripe/util_test.rb +1 -1
  187. data/test/stripe/webhook_endpoint_test.rb +18 -1
  188. data/test/stripe/webhook_test.rb +4 -4
  189. data/test/stripe_mock.rb +4 -3
  190. data/test/stripe_test.rb +1 -14
  191. data/test/test_helper.rb +14 -11
  192. metadata +117 -125
  193. data/lib/stripe/alipay_account.rb +0 -27
  194. data/lib/stripe/application_fee.rb +0 -23
  195. data/lib/stripe/application_fee_refund.rb +0 -22
  196. data/lib/stripe/charge.rb +0 -84
  197. data/lib/stripe/customer.rb +0 -90
  198. data/lib/stripe/invoice.rb +0 -48
  199. data/lib/stripe/issuer_fraud_record.rb +0 -9
  200. data/lib/stripe/issuing/authorization.rb +0 -22
  201. data/lib/stripe/issuing/card.rb +0 -18
  202. data/lib/stripe/login_link.rb +0 -11
  203. data/lib/stripe/order.rb +0 -31
  204. data/lib/stripe/payment_intent.rb +0 -26
  205. data/lib/stripe/payout.rb +0 -20
  206. data/lib/stripe/reversal.rb +0 -22
  207. data/lib/stripe/review.rb +0 -14
  208. data/lib/stripe/subscription.rb +0 -25
  209. data/lib/stripe/subscription_schedule.rb +0 -32
  210. data/lib/stripe/subscription_schedule_revision.rb +0 -25
  211. data/lib/stripe/topup.rb +0 -16
  212. data/lib/stripe/transfer.rb +0 -23
  213. data/lib/stripe/usage_record.rb +0 -14
  214. data/test/stripe/account_external_accounts_operations_test.rb +0 -69
  215. data/test/stripe/account_login_links_operations_test.rb +0 -21
  216. data/test/stripe/account_persons_operations_test.rb +0 -70
  217. data/test/stripe/application_fee_refunds_operations_test.rb +0 -56
  218. data/test/stripe/customer_sources_operations_test.rb +0 -64
  219. data/test/stripe/file_upload_test.rb +0 -76
  220. data/test/stripe/issuer_fraud_record_test.rb +0 -20
  221. data/test/stripe/subscription_schedule_revision_test.rb +0 -37
  222. data/test/stripe/subscription_schedule_revisions_operations_test.rb +0 -35
  223. data/test/stripe/transfer_reversals_operations_test.rb +0 -57
  224. data/test/stripe/usage_record_test.rb +0 -28
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require ::File.expand_path("../../test_helper", __FILE__)
4
-
5
- module Stripe
6
- # This is a strict copy of `FileTest`, except that it uses
7
- # `Stripe::FileUpload` instead of `Stripe::File`.
8
- class FileUploadTest < Test::Unit::TestCase
9
- should "be listable" do
10
- files = Stripe::FileUpload.list
11
- assert_requested :get, "#{Stripe.api_base}/v1/files"
12
- assert files.data.is_a?(Array)
13
- assert files.data[0].is_a?(Stripe::FileUpload)
14
- end
15
-
16
- should "be retrievable" do
17
- file = Stripe::FileUpload.retrieve("file_123")
18
- assert_requested :get, "#{Stripe.api_base}/v1/files/file_123"
19
- assert file.is_a?(Stripe::FileUpload)
20
- end
21
-
22
- context ".create" do
23
- setup do
24
- # We don't point to the same host for the API and uploads in
25
- # production, but `stripe-mock` supports both APIs.
26
- Stripe.uploads_base = Stripe.api_base
27
-
28
- # Set `api_base` to `nil` to ensure that these requests are _not_ sent
29
- # to the default API hostname. `api_base` is reset when each test
30
- # starts so this won't affect the global state.
31
- Stripe.api_base = nil
32
- end
33
-
34
- should "be creatable with a File" do
35
- file = Stripe::FileUpload.create(
36
- purpose: "dispute_evidence",
37
- file: ::File.new(__FILE__)
38
- )
39
- assert_requested :post, "#{Stripe.uploads_base}/v1/files"
40
- assert file.is_a?(Stripe::FileUpload)
41
- end
42
-
43
- should "be creatable with a Tempfile" do
44
- tempfile = Tempfile.new("foo")
45
- tempfile.write("Hello world")
46
- tempfile.rewind
47
-
48
- file = Stripe::FileUpload.create(
49
- purpose: "dispute_evidence",
50
- file: tempfile
51
- )
52
- assert_requested :post, "#{Stripe.uploads_base}/v1/files"
53
- assert file.is_a?(Stripe::FileUpload)
54
- end
55
-
56
- should "be creatable with Faraday::UploadIO" do
57
- file = Stripe::FileUpload.create(
58
- purpose: "dispute_evidence",
59
- file: Faraday::UploadIO.new(::File.new(__FILE__), nil)
60
- )
61
- assert_requested :post, "#{Stripe.uploads_base}/v1/files"
62
- assert file.is_a?(Stripe::FileUpload)
63
- end
64
- end
65
-
66
- should "be deserializable when `object=file`" do
67
- file = Stripe::Util.convert_to_stripe_object({ object: "file" }, {})
68
- assert file.is_a?(Stripe::FileUpload)
69
- end
70
-
71
- should "be deserializable when `object=file_upload`" do
72
- file = Stripe::Util.convert_to_stripe_object({ object: "file_upload" }, {})
73
- assert file.is_a?(Stripe::FileUpload)
74
- end
75
- end
76
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require ::File.expand_path("../../test_helper", __FILE__)
4
-
5
- module Stripe
6
- class IssuerFraudRecordTest < Test::Unit::TestCase
7
- should "be listable" do
8
- issfrs = Stripe::IssuerFraudRecord.list
9
- assert_requested :get, "#{Stripe.api_base}/v1/issuer_fraud_records"
10
- assert issfrs.data.is_a?(Array)
11
- assert issfrs.data[0].is_a?(Stripe::IssuerFraudRecord)
12
- end
13
-
14
- should "be retrievable" do
15
- issfr = Stripe::IssuerFraudRecord.retrieve("issfr_123")
16
- assert_requested :get, "#{Stripe.api_base}/v1/issuer_fraud_records/issfr_123"
17
- assert issfr.is_a?(Stripe::IssuerFraudRecord)
18
- end
19
- end
20
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require ::File.expand_path("../../test_helper", __FILE__)
4
-
5
- module Stripe
6
- class SubscriptionScheduleRevisionTest < Test::Unit::TestCase
7
- context "#resource_url" do
8
- should "return a resource URL" do
9
- revision = Stripe::SubscriptionScheduleRevision.construct_from(
10
- id: "sub_sched_rev_123",
11
- schedule: "sub_sched_123"
12
- )
13
- assert_equal "/v1/subscription_schedules/sub_sched_123/revisions/sub_sched_rev_123",
14
- revision.resource_url
15
- end
16
-
17
- should "raise without a subscription schedule" do
18
- revision = Stripe::SubscriptionScheduleRevision.construct_from(id: "sub_sched_rev_123")
19
- assert_raises NotImplementedError do
20
- revision.resource_url
21
- end
22
- end
23
- end
24
-
25
- should "raise on #retrieve" do
26
- assert_raises NotImplementedError do
27
- Stripe::SubscriptionScheduleRevision.retrieve("sub_sched_rev_123")
28
- end
29
- end
30
-
31
- should "raise on #list" do
32
- assert_raises NotImplementedError do
33
- Stripe::SubscriptionScheduleRevision.list("sub_sched_rev_123", {})
34
- end
35
- end
36
- end
37
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require ::File.expand_path("../../test_helper", __FILE__)
4
-
5
- module Stripe
6
- class SubscriptionScheduleRevisionsOperationsTest < Test::Unit::TestCase
7
- setup do
8
- @schedule_id = "sub_sched_123"
9
- @revision_id = "sub_sched_rev_123"
10
- end
11
-
12
- context "#retrieve_revision" do
13
- should "retrieve a subscription schedule revision" do
14
- revision = Stripe::SubscriptionSchedule.retrieve_revision(
15
- @schedule_id,
16
- @revision_id
17
- )
18
- assert_requested :get, "#{Stripe.api_base}/v1/subscription_schedules/#{@schedule_id}/revisions/#{@revision_id}"
19
- assert revision.is_a?(Stripe::SubscriptionScheduleRevision)
20
- end
21
- end
22
-
23
- context "#list_revisions" do
24
- should "list a subscription schedule's revisions" do
25
- revisions = Stripe::SubscriptionSchedule.list_revisions(
26
- @schedule_id
27
- )
28
- assert_requested :get, "#{Stripe.api_base}/v1/subscription_schedules/#{@schedule_id}/revisions"
29
- assert revisions.is_a?(Stripe::ListObject)
30
- assert revisions.data.is_a?(Array)
31
- assert revisions.data[0].is_a?(Stripe::SubscriptionScheduleRevision)
32
- end
33
- end
34
- end
35
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require ::File.expand_path("../../test_helper", __FILE__)
4
-
5
- module Stripe
6
- class TransferReversalsOperationsTest < Test::Unit::TestCase
7
- setup do
8
- @transfer_id = "tr_123"
9
- @reversal_id = "trr_123"
10
- end
11
-
12
- context "#create_reversal" do
13
- should "create a reversal" do
14
- reversal = Stripe::Transfer.create_reversal(
15
- @transfer_id,
16
- amount: 100
17
- )
18
- assert_requested :post, "#{Stripe.api_base}/v1/transfers/#{@transfer_id}/reversals"
19
- assert reversal.is_a?(Stripe::Reversal)
20
- end
21
- end
22
-
23
- context "#retrieve_reversal" do
24
- should "retrieve a reversal" do
25
- reversal = Stripe::Transfer.retrieve_reversal(
26
- @transfer_id,
27
- @reversal_id
28
- )
29
- assert_requested :get, "#{Stripe.api_base}/v1/transfers/#{@transfer_id}/reversals/#{@reversal_id}"
30
- assert reversal.is_a?(Stripe::Reversal)
31
- end
32
- end
33
-
34
- context "#update_reversal" do
35
- should "update a reversal" do
36
- reversal = Stripe::Transfer.update_reversal(
37
- @transfer_id,
38
- @reversal_id,
39
- metadata: { foo: "bar" }
40
- )
41
- assert_requested :post, "#{Stripe.api_base}/v1/transfers/#{@transfer_id}/reversals/#{@reversal_id}"
42
- assert reversal.is_a?(Stripe::Reversal)
43
- end
44
- end
45
-
46
- context "#list_reversals" do
47
- should "list the transfer's reversals" do
48
- reversals = Stripe::Transfer.list_reversals(
49
- @transfer_id
50
- )
51
- assert_requested :get, "#{Stripe.api_base}/v1/transfers/#{@transfer_id}/reversals"
52
- assert reversals.is_a?(Stripe::ListObject)
53
- assert reversals.data.is_a?(Array)
54
- end
55
- end
56
- end
57
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require ::File.expand_path("../../test_helper", __FILE__)
4
-
5
- module Stripe
6
- class UsageRecordTest < Test::Unit::TestCase
7
- should "be creatable" do
8
- usage_record = Stripe::UsageRecord.create(
9
- quantity: 5000,
10
- subscription_item: "si_abc",
11
- timestamp: Time.now.to_i,
12
- action: "increment"
13
- )
14
- assert_requested :post, "#{Stripe.api_base}/v1/subscription_items/si_abc/usage_records"
15
- assert usage_record.is_a?(Stripe::UsageRecord)
16
- end
17
-
18
- should "raise when subscription_item is missing" do
19
- assert_raise ArgumentError do
20
- Stripe::UsageRecord.create(
21
- quantity: 5000,
22
- timestamp: Time.now.to_i,
23
- action: "increment"
24
- )
25
- end
26
- end
27
- end
28
- end