From 259e758d6e5aa68f0fef6bcdcc39da85465461bf Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 22 Apr 2021 09:33:30 +0200 Subject: [PATCH 1/2] When suppress_error_msg is present do no validate order and redirect - When creating a new order, it's not necessary to display the "Line items can't be blank" as the order has just been created and the user is rightly doing configuration about line items --- app/controllers/spree/admin/orders_controller.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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? From 05a00a07ef926691bd13aa7ada564f5226ad9314 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 22 Apr 2021 10:03:23 +0200 Subject: [PATCH 2/2] Add test on order creation and correct display of the error - The error "Line items can't be blank" should not be displayed when we first arrived on this page after creation but only if we update the page --- spec/features/admin/order_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) 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'