mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-11-28 00:02:45 -05:00
flexible billing primitives and tests
This commit is contained in:
parent
0b54bf7ba2
commit
c066c9c5f8
@ -33,12 +33,12 @@ Metrics/LineLength:
|
||||
# Offense count: 32
|
||||
# Configuration parameters: CountComments.
|
||||
Metrics/MethodLength:
|
||||
Max: 45
|
||||
Max: 46
|
||||
|
||||
# Offense count: 1
|
||||
# Configuration parameters: CountComments.
|
||||
Metrics/ModuleLength:
|
||||
Max: 305
|
||||
Max: 306
|
||||
|
||||
# Offense count: 6
|
||||
# Configuration parameters: CountKeywordArgs.
|
||||
|
||||
@ -76,6 +76,7 @@ require "stripe/three_d_secure"
|
||||
require "stripe/token"
|
||||
require "stripe/topup"
|
||||
require "stripe/transfer"
|
||||
require "stripe/usage_record"
|
||||
|
||||
# OAuth
|
||||
require "stripe/oauth"
|
||||
|
||||
12
lib/stripe/usage_record.rb
Normal file
12
lib/stripe/usage_record.rb
Normal file
@ -0,0 +1,12 @@
|
||||
module Stripe
|
||||
class UsageRecord < APIResource
|
||||
def self.create(params = {}, opts = {})
|
||||
raise(ArgumentError, "Params must have a subscription_item key") unless params.key?(:subscription_item)
|
||||
req_params = params.clone.delete_if { |key, _value| key == :subscription_item }
|
||||
resp, opts = request(:post, "/v1/subscription_items/#{params[:subscription_item]}/usage_records", req_params, opts)
|
||||
Util.convert_to_stripe_object(resp.data, opts)
|
||||
end
|
||||
|
||||
OBJECT_NAME = "usage_record".freeze
|
||||
end
|
||||
end
|
||||
@ -85,6 +85,7 @@ module Stripe
|
||||
Token::OBJECT_NAME => Token,
|
||||
Topup::OBJECT_NAME => Topup,
|
||||
Transfer::OBJECT_NAME => Transfer,
|
||||
UsageRecord::OBJECT_NAME => UsageRecord,
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@ -27,6 +27,46 @@ module Stripe
|
||||
assert plan.is_a?(Stripe::Plan)
|
||||
end
|
||||
|
||||
should "be creatable with metered configuration" do
|
||||
plan = Stripe::Plan.create(
|
||||
amount: 5000,
|
||||
interval: "month",
|
||||
name: "Sapphire elite",
|
||||
currency: "usd",
|
||||
id: "sapphire-elite",
|
||||
usage_type: "metered"
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/plans"
|
||||
assert plan.is_a?(Stripe::Plan)
|
||||
end
|
||||
|
||||
should "be creatable with tiered configuration" do
|
||||
plan = Stripe::Plan.create(
|
||||
interval: "month",
|
||||
name: "Sapphire elite",
|
||||
currency: "usd",
|
||||
id: "sapphire-elite",
|
||||
billing_scheme: "tiered",
|
||||
tiers_mode: "volume",
|
||||
tiers: [{ up_to: 100, amount: 1000 }, { up_to: "inf", amount: 2000 }]
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/plans"
|
||||
assert plan.is_a?(Stripe::Plan)
|
||||
end
|
||||
|
||||
should "be creatable with transform_usage" do
|
||||
plan = Stripe::Plan.create(
|
||||
interval: "month",
|
||||
name: "Sapphire elite",
|
||||
currency: "usd",
|
||||
id: "sapphire-elite",
|
||||
amount: 5000,
|
||||
transform_usage: { round: "up", divide_by: 50 }
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/plans"
|
||||
assert plan.is_a?(Stripe::Plan)
|
||||
end
|
||||
|
||||
should "be saveable" do
|
||||
plan = Stripe::Plan.retrieve("sapphire-elite")
|
||||
plan.metadata["key"] = "value"
|
||||
|
||||
26
test/stripe/usage_record_test.rb
Normal file
26
test/stripe/usage_record_test.rb
Normal file
@ -0,0 +1,26 @@
|
||||
require File.expand_path("../../test_helper", __FILE__)
|
||||
|
||||
module Stripe
|
||||
class UsageRecordTest < Test::Unit::TestCase
|
||||
should "be creatable" do
|
||||
usage_record = Stripe::UsageRecord.create(
|
||||
quantity: 5000,
|
||||
subscription_item: "si_abc",
|
||||
timestamp: Time.now.to_i,
|
||||
action: "increment"
|
||||
)
|
||||
assert_requested :post, "#{Stripe.api_base}/v1/subscription_items/si_abc/usage_records"
|
||||
assert usage_record.is_a?(Stripe::UsageRecord)
|
||||
end
|
||||
|
||||
should "raise when subscription_item is missing" do
|
||||
assert_raise ArgumentError do
|
||||
Stripe::UsageRecord.create(
|
||||
quantity: 5000,
|
||||
timestamp: Time.now.to_i,
|
||||
action: "increment"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user