Fix error handling when creating a voucher adjustment

I wrongly assumed that `voucher.create_adjustment` would return nil
if failing to create an adjustment. I will in fact return an
adjustment object with errors.
This commit is contained in:
Gaetan Craig-Riou
2023-05-12 15:01:52 +10:00
committed by Maikel Linke
parent ccff3379ea
commit 5eb6097101
2 changed files with 8 additions and 4 deletions

View File

@@ -226,8 +226,9 @@ class SplitCheckoutController < ::BaseController
adjustment = voucher.create_adjustment(voucher.code, @order)
if adjustment.nil?
if !adjustment.valid?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.add_voucher_error'))
adjustment.errors.each { |error| @order.errors.import(error) }
return false
end

View File

@@ -279,14 +279,17 @@ describe SplitCheckoutController, type: :controller do
context "when adding fails" do
it "returns 422 and an error message" do
# Makes adding the voucher fails
allow(voucher).to receive(:create_adjustment).and_return(nil)
# Create a non valid adjustment
adjustment = build(:adjustment, label: nil)
allow(voucher).to receive(:create_adjustment).and_return(adjustment)
allow(Voucher).to receive(:find_by).and_return(voucher)
put :update, params: params
expect(response.status).to eq 422
expect(flash[:error]).to match "There was an error while adding the voucher"
expect(flash[:error]).to match(
"There was an error while adding the voucher and Label can't be blank"
)
end
end