summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Barbosa <igorbarbosa.p@gmail.com>2021-02-12 16:27:53 -0300
committerIgor Barbosa <igorbarbosa.p@gmail.com>2021-02-12 16:27:53 -0300
commit7e3aeed0510cf6e1572c3bd94d64b814993d1631 (patch)
treeede1a07b8c830a22a9a52e60d148aaae9e1c0ef6
parente526705dcbccf1255ea4b4646a6aabededf08fc7 (diff)
Add tests for subscription payment method update
The subscription payment method update on the admin panel was missing a test. To make it easier to add those specs, it removes the subject and let definitions in favor of making it explicit for each case.
-rw-r--r--spec/controllers/spree/admin/subscriptions_controller_spec.rb54
1 files changed, 44 insertions, 10 deletions
diff --git a/spec/controllers/spree/admin/subscriptions_controller_spec.rb b/spec/controllers/spree/admin/subscriptions_controller_spec.rb
index 7626efd..8c09ab1 100644
--- a/spec/controllers/spree/admin/subscriptions_controller_spec.rb
+++ b/spec/controllers/spree/admin/subscriptions_controller_spec.rb
@@ -42,20 +42,54 @@ RSpec.describe Spree::Admin::SubscriptionsController, type: :request do
end
describe 'PUT :update' do
- subject { put spree.admin_subscription_path(subscription), params: subscription_params }
+ it 'redirects to edit subscription page' do
+ subscription = create :subscription
+ subscription_params = { subscription: { interval_length: 1 } }
- let(:expected_date) { DateTime.parse('2001/11/12') }
- let(:subscription) { create :subscription, :actionable }
- let(:subscription_params) do
- {
- subscription: { actionable_date: expected_date }
- }
+ expect(put(spree.admin_subscription_path(subscription), params: subscription_params)).
+ to redirect_to spree.edit_admin_subscription_path(subscription)
end
- it { is_expected.to redirect_to spree.edit_admin_subscription_path(subscription) }
-
it 'updates the subscription attributes', :aggregate_failures do
- expect { subject }.to change { subscription.reload.actionable_date }.to expected_date
+ expected_date = DateTime.parse('2001/11/12')
+ subscription = create :subscription, :actionable
+ subscription_params = { subscription: { actionable_date: expected_date } }
+
+ expect { put spree.admin_subscription_path(subscription), params: subscription_params }.
+ to change { subscription.reload.actionable_date }.
+ to expected_date
+ end
+
+ context 'when updating the payment method' do
+ it 'updates the subscription payment method' do
+ check_payment_method = create :check_payment_method
+ subscription = create :subscription
+ subscription_params = { subscription: { payment_method_id: check_payment_method.id } }
+
+ put spree.admin_subscription_path(subscription), params: subscription_params
+
+ expect(subscription.reload).to have_attributes(
+ payment_method: check_payment_method,
+ payment_source: nil,
+ )
+ end
+
+ it 'updates the subscription payment source if payment method requires source' do
+ subscription = create :subscription
+ payment = create :credit_card_payment
+ payment_source = payment.source
+ payment_method = payment.payment_method
+ subscription_params = {
+ subscription: {
+ payment_method_id: payment_method.id,
+ payment_source_id: payment_source.id,
+ }
+ }
+
+ put spree.admin_subscription_path(subscription), params: subscription_params
+
+ expect(subscription.reload.payment_source).to eq(payment_source)
+ end
end
end