diff options
author | Alessandro Desantis <desa.alessandro@gmail.com> | 2020-10-09 14:04:03 +0200 |
---|---|---|
committer | Alessandro Desantis <desa.alessandro@gmail.com> | 2020-10-09 14:04:15 +0200 |
commit | d0d2abca6c2f3c57ed16087a816d2638134208d8 (patch) | |
tree | 6f2136e2c5c2ddce2c4ff2c9a03a4c37aceb1cc2 | |
parent | 3c510ab78a18d9fd747ae0946dfa63807d439e91 (diff) |
Fire events for subscription installment processing
4 files changed, 42 insertions, 0 deletions
diff --git a/app/services/solidus_subscriptions/payment_failed_dispatcher.rb b/app/services/solidus_subscriptions/payment_failed_dispatcher.rb index 562992b..29eb291 100644 --- a/app/services/solidus_subscriptions/payment_failed_dispatcher.rb +++ b/app/services/solidus_subscriptions/payment_failed_dispatcher.rb @@ -9,6 +9,12 @@ module SolidusSubscriptions installments.each do |installment| installment.payment_failed!(order) end + + ::Spree::Event.fire( + 'solidus_subscriptions.installments_failed_payment', + installments: installments, + order: order, + ) end end end diff --git a/app/services/solidus_subscriptions/success_dispatcher.rb b/app/services/solidus_subscriptions/success_dispatcher.rb index 4ac5e94..ce55266 100644 --- a/app/services/solidus_subscriptions/success_dispatcher.rb +++ b/app/services/solidus_subscriptions/success_dispatcher.rb @@ -7,6 +7,12 @@ module SolidusSubscriptions installments.each do |installment| installment.success!(order) end + + ::Spree::Event.fire( + 'solidus_subscriptions.installments_succeeded', + installments: installments, + order: order, + ) end end end diff --git a/spec/services/solidus_subscriptions/payment_failed_dispatcher_spec.rb b/spec/services/solidus_subscriptions/payment_failed_dispatcher_spec.rb index 18a018d..a6a8a0c 100644 --- a/spec/services/solidus_subscriptions/payment_failed_dispatcher_spec.rb +++ b/spec/services/solidus_subscriptions/payment_failed_dispatcher_spec.rb @@ -23,5 +23,20 @@ RSpec.describe SolidusSubscriptions::PaymentFailedDispatcher do expect(order.state).to eq('canceled') end + + it 'fires an installments_failed_payment event' do + stub_const('Spree::Event', class_spy(Spree::Event)) + installments = Array.new(2) { instance_spy(SolidusSubscriptions::Installment) } + order = create(:order_with_line_items) + + dispatcher = described_class.new(installments, order) + dispatcher.dispatch + + expect(Spree::Event).to have_received(:fire).with( + 'solidus_subscriptions.installments_failed_payment', + installments: installments, + order: order, + ) + end end end diff --git a/spec/services/solidus_subscriptions/success_dispatcher_spec.rb b/spec/services/solidus_subscriptions/success_dispatcher_spec.rb index e8a6c3d..ce41638 100644 --- a/spec/services/solidus_subscriptions/success_dispatcher_spec.rb +++ b/spec/services/solidus_subscriptions/success_dispatcher_spec.rb @@ -9,5 +9,20 @@ RSpec.describe SolidusSubscriptions::SuccessDispatcher do expect(installments).to all(have_received(:success!).with(order).once) end + + it 'fires an installments_succeeded event' do + stub_const('Spree::Event', class_spy(Spree::Event)) + installments = Array.new(2) { instance_spy(SolidusSubscriptions::Installment) } + order = create(:order_with_line_items) + + dispatcher = described_class.new(installments, order) + dispatcher.dispatch + + expect(Spree::Event).to have_received(:fire).with( + 'solidus_subscriptions.installments_succeeded', + installments: installments, + order: order, + ) + end end end |