From 135a311c050d7ae5b68bee79800083568c4f7133 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 25 Apr 2021 22:47:45 +0100 Subject: [PATCH] Update void payments Backport from Spree 2.4 stable: https://github.com/spree/spree/commit/412199239827b820f5ab0165dae15fcbb4e1618e --- app/models/spree/payment.rb | 2 +- spec/models/spree/payment_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb index 87c5d8955f..111de34e25 100644 --- a/app/models/spree/payment.rb +++ b/app/models/spree/payment.rb @@ -201,7 +201,7 @@ module Spree end def update_order - if completed? + if completed? || void? order.updater.update_payment_total end diff --git a/spec/models/spree/payment_spec.rb b/spec/models/spree/payment_spec.rb index bde1fa3c5a..91220d5474 100644 --- a/spec/models/spree/payment_spec.rb +++ b/spec/models/spree/payment_spec.rb @@ -546,6 +546,15 @@ describe Spree::Payment do end end + context 'when the payment was completed but now void' do + let(:payment) { create(:payment, amount: 100, order: order, state: 'completed') } + + it 'updates order payment total' do + payment.void + expect(order.payment_total).to eq 0 + end + end + context "completed orders" do before { allow(order).to receive(:completed?) { true } }