From ac666a6fce5a4a31f4c7fcdbcfabee9b6620102c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 18 Apr 2023 11:23:29 +0200 Subject: [PATCH] Validate presence of distributor and order_cycle in set_distribution step --- .../spree/admin/orders_controller.rb | 2 ++ app/models/spree/order.rb | 2 ++ spec/system/admin/order_spec.rb | 22 +++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/app/controllers/spree/admin/orders_controller.rb b/app/controllers/spree/admin/orders_controller.rb index 1127f4eb45..c62a5b017a 100644 --- a/app/controllers/spree/admin/orders_controller.rb +++ b/app/controllers/spree/admin/orders_controller.rb @@ -30,6 +30,8 @@ module Spree on_update @order.update(order_params) + return unless @order.valid?(:set_distribution_step) + @order.save redirect_to spree.admin_order_customer_path(@order) end diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index b3e4b8f935..40dfbcb093 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -97,6 +97,8 @@ module Spree validates :email, presence: true, format: /\A([\w.%+\-']+)@([\w\-]+\.)+(\w{2,})\z/i, if: :require_email + validates :order_cycle, presence: true, on: :set_distribution_step + validates :distributor, presence: true, on: :set_distribution_step make_permalink field: :number diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index d9e3dae850..3b932aec74 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -89,6 +89,28 @@ describe ' click_button 'Update' end + context "can't create an order without selecting a distributor nor an order cycle" do + before do + login_as_admin + visit spree.admin_orders_path + click_link 'New Order' + end + + it 'shows error when distributor is not selected' do + click_button 'Next' + + expect(page).to have_content "Order cycle can't be blank" + expect(page).to have_content "Distributor can't be blank" + end + + it 'shows error when order cycle is not selected' do + select2_select distributor.name, from: 'order_distributor_id' + click_button 'Next' + + expect(page).to have_content "Order cycle can't be blank" + end + end + it "can add a product to an existing order" do login_as_admin visit spree.edit_admin_order_path(order)