diff --git a/app/controllers/spree/admin/orders_controller.rb b/app/controllers/spree/admin/orders_controller.rb index e5bc415bc5..67f8a61db6 100644 --- a/app/controllers/spree/admin/orders_controller.rb +++ b/app/controllers/spree/admin/orders_controller.rb @@ -38,11 +38,12 @@ module Spree @order.recreate_all_fees! unless order_params.present? && @order.update(order_params) && @order.line_items.present? - if @order.line_items.empty? + if @order.line_items.empty? && !params[:suppress_error_msg] @order.errors.add(:line_items, Spree.t('errors.messages.blank')) end - return redirect_to(spree.edit_admin_order_path(@order), - flash: { error: @order.errors.full_messages.join(', ') }) + + flash[:error] = @order.errors.full_messages.join(', ') if @order.errors.present? + return redirect_to spree.edit_admin_order_path(@order) end if @order.complete? diff --git a/spec/features/admin/order_spec.rb b/spec/features/admin/order_spec.rb index fe880ed94c..17d8a99658 100644 --- a/spec/features/admin/order_spec.rb +++ b/spec/features/admin/order_spec.rb @@ -61,6 +61,13 @@ feature ' select2_select order_cycle.name, from: 'order_order_cycle_id' click_button 'Next' + expect(page).not_to have_selector '.flash.error' + expect(page).not_to have_content "Line items can't be blank" + + click_button "Update And Recalculate Fees" + expect(page).to have_selector '.flash.error' + expect(page).to have_content "Line items can't be blank" + # it suppresses validation errors when setting distribution expect(page).not_to have_selector '#errorExplanation' expect(page).to have_content 'ADD PRODUCT'