From a1438f91e968b79e5d7b7d95529d66c8ed902842 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Fri, 27 Aug 2021 13:55:51 +0200 Subject: [PATCH] Display error on email (triggered by `advance_order_state` method) --- app/controllers/split_checkout_controller.rb | 4 ++-- app/models/spree/order.rb | 2 +- spec/models/spree/order_spec.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/split_checkout_controller.rb b/app/controllers/split_checkout_controller.rb index 6e0a071c61..917f6ad2d9 100644 --- a/app/controllers/split_checkout_controller.rb +++ b/app/controllers/split_checkout_controller.rb @@ -37,9 +37,9 @@ class SplitCheckoutController < ::BaseController load_shipping_method handle_shipping_method_selection - if confirm_order || update_order + confirm_or_update = confirm_order || update_order + if confirm_or_update && advance_order_state clear_invalid_payments - advance_order_state redirect_to_step else if @shipping_method_id.blank? diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index ca5b45dcfa..301f17a422 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -501,7 +501,7 @@ module Spree def disallow_guest_order return unless using_guest_checkout? && registered_email? - errors.add(:base, I18n.t('devise.failure.already_registered')) + errors.add(:email, I18n.t('devise.failure.already_registered')) end # After changing line items of a completed order diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index e6b7086e98..b0fc32a39a 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -1059,7 +1059,7 @@ describe Spree::Order do it "returns a validation error" do expect{ order.next }.to change(order.errors, :count).from(0).to(1) - expect(order.errors.messages[:base]).to eq [I18n.t('devise.failure.already_registered')] + expect(order.errors.messages[:email]).to eq [I18n.t('devise.failure.already_registered')] expect(order.state).to eq 'cart' end end