fxi the subscription provision service spec
This commit is contained in:
+43
-4
@@ -13,7 +13,9 @@ describe Enterprise::Billing::V2::SubscriptionProvisioningService do
|
|||||||
|
|
||||||
describe '#provision' do
|
describe '#provision' do
|
||||||
let(:subscription_response) do
|
let(:subscription_response) do
|
||||||
OpenStruct.new(
|
# Mock Stripe::V2::Billing::PricingPlanSubscription object
|
||||||
|
instance_double(
|
||||||
|
Stripe::V2::Billing::PricingPlanSubscription,
|
||||||
id: subscription_id,
|
id: subscription_id,
|
||||||
pricing_plan: pricing_plan_id,
|
pricing_plan: pricing_plan_id,
|
||||||
billing_cadence: 'bpc_cadence_123',
|
billing_cadence: 'bpc_cadence_123',
|
||||||
@@ -22,7 +24,8 @@ describe Enterprise::Billing::V2::SubscriptionProvisioningService do
|
|||||||
end
|
end
|
||||||
|
|
||||||
before do
|
before do
|
||||||
allow(StripeV2Client).to receive(:request).and_return(subscription_response)
|
# Mock the retrieve_pricing_plan_subscription method directly
|
||||||
|
allow(service).to receive(:retrieve_pricing_plan_subscription).with(subscription_id).and_return(subscription_response)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'provisions subscription' do
|
it 'provisions subscription' do
|
||||||
@@ -35,7 +38,9 @@ describe Enterprise::Billing::V2::SubscriptionProvisioningService do
|
|||||||
|
|
||||||
describe '#refresh' do
|
describe '#refresh' do
|
||||||
let(:subscription_response) do
|
let(:subscription_response) do
|
||||||
OpenStruct.new(
|
# Mock Stripe::V2::Billing::PricingPlanSubscription object
|
||||||
|
instance_double(
|
||||||
|
Stripe::V2::Billing::PricingPlanSubscription,
|
||||||
id: 'bpps_sub_456',
|
id: 'bpps_sub_456',
|
||||||
pricing_plan: pricing_plan_id,
|
pricing_plan: pricing_plan_id,
|
||||||
billing_cadence: 'bpc_cadence_123',
|
billing_cadence: 'bpc_cadence_123',
|
||||||
@@ -45,7 +50,9 @@ describe Enterprise::Billing::V2::SubscriptionProvisioningService do
|
|||||||
|
|
||||||
before do
|
before do
|
||||||
account.update!(custom_attributes: { 'stripe_subscription_id' => 'bpps_sub_456' })
|
account.update!(custom_attributes: { 'stripe_subscription_id' => 'bpps_sub_456' })
|
||||||
allow(StripeV2Client).to receive(:request).and_return(subscription_response)
|
|
||||||
|
# Mock the retrieve_pricing_plan_subscription method directly
|
||||||
|
allow(service).to receive(:retrieve_pricing_plan_subscription).with('bpps_sub_456').and_return(subscription_response)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'refreshes subscription' do
|
it 'refreshes subscription' do
|
||||||
@@ -54,4 +61,36 @@ describe Enterprise::Billing::V2::SubscriptionProvisioningService do
|
|||||||
expect(result[:pricing_plan_id]).to eq(pricing_plan_id)
|
expect(result[:pricing_plan_id]).to eq(pricing_plan_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#cancel subscription' do
|
||||||
|
let(:subscription_response) do
|
||||||
|
# Mock Stripe::V2::Billing::PricingPlanSubscription object with canceled status
|
||||||
|
instance_double(
|
||||||
|
Stripe::V2::Billing::PricingPlanSubscription,
|
||||||
|
id: subscription_id,
|
||||||
|
pricing_plan: pricing_plan_id,
|
||||||
|
billing_cadence: 'bpc_cadence_123',
|
||||||
|
servicing_status: 'canceled'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:hacker_plan_id) { 'bpp_hacker_plan_123' }
|
||||||
|
|
||||||
|
before do
|
||||||
|
create(:installation_config, name: 'STRIPE_HACKER_PLAN_ID', value: hacker_plan_id)
|
||||||
|
|
||||||
|
# Mock the retrieve_pricing_plan_subscription method directly
|
||||||
|
allow(service).to receive(:retrieve_pricing_plan_subscription).with(subscription_id).and_return(subscription_response)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'cancels subscription and resets to hacker plan' do
|
||||||
|
result = service.provision(subscription_id: subscription_id)
|
||||||
|
|
||||||
|
expect(result[:pricing_plan_id]).to be_nil
|
||||||
|
expect(result[:quantity]).to be_nil
|
||||||
|
expect(account.custom_attributes['plan_name']).to eq('Hacker')
|
||||||
|
expect(account.custom_attributes['stripe_subscription_id']).to be_nil
|
||||||
|
expect(account.custom_attributes['subscription_status']).to eq('canceled')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user