From 77554e21fcd4be1cae7b8f3eb624cf16f425e189 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 5 Jun 2023 11:30:16 +0100 Subject: [PATCH] move advance_to_payment on order's details page from `edit` to `update` --- .../spree/admin/orders_controller.rb | 4 ++-- .../spree/admin/orders_controller_spec.rb | 24 ++++++++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/controllers/spree/admin/orders_controller.rb b/app/controllers/spree/admin/orders_controller.rb index 8f3e73bf9e..80c3707ca3 100644 --- a/app/controllers/spree/admin/orders_controller.rb +++ b/app/controllers/spree/admin/orders_controller.rb @@ -44,8 +44,6 @@ module Spree def edit @order.shipments.map(&:refresh_rates) - - OrderWorkflow.new(@order).advance_to_payment @order.errors.clear end @@ -53,6 +51,7 @@ module Spree on_update if params[:set_distribution_step] && @order.update(order_params) + OrderWorkflow.new(@order).advance_to_payment if @order.state.in? ["cart", "address", "delivery"] return redirect_to spree.admin_order_customer_path(@order) end @@ -65,6 +64,7 @@ module Spree return redirect_to spree.edit_admin_order_path(@order) end + OrderWorkflow.new(@order).advance_to_payment if @order.state.in? ["cart", "address", "delivery"] if @order.complete? redirect_to spree.edit_admin_order_path(@order) else diff --git a/spec/controllers/spree/admin/orders_controller_spec.rb b/spec/controllers/spree/admin/orders_controller_spec.rb index bef6e7cf1c..5664d9e3a5 100644 --- a/spec/controllers/spree/admin/orders_controller_spec.rb +++ b/spec/controllers/spree/admin/orders_controller_spec.rb @@ -8,12 +8,6 @@ describe Spree::Admin::OrdersController, type: :controller do before { controller_login_as_admin } - it "advances the order state" do - expect { - spree_get :edit, id: order - }.to change { order.reload.state }.from("cart").to("payment") - end - describe "view" do render_views @@ -229,9 +223,19 @@ describe Spree::Admin::OrdersController, type: :controller do end context "with line items" do + let!(:distributor){ create(:distributor_enterprise) } + let!(:shipment){ create(:shipment) } + let!(:order_cycle){ create(:simple_order_cycle, distributors: [distributor], variants: [line_item.variant]) } + before do + line_item.product.supplier = distributor + order.shipments << shipment order.line_items << line_item - order.save + distributor.shipping_methods << shipment.shipping_method + order.select_shipping_method(shipment.shipping_method.id) + order.save! + params[:order][:distributor_id] = distributor.id + params[:order][:order_cycle_id] = order_cycle.id params[:order][:line_items_attributes] = [{ id: line_item.id, quantity: line_item.quantity }] end @@ -239,9 +243,11 @@ describe Spree::Admin::OrdersController, type: :controller do context "and no errors" do it "updates distribution charges and redirects to payments page" do expect_any_instance_of(Spree::Order).to receive(:recreate_all_fees!) + allow_any_instance_of(Spree::Order).to receive(:ensure_available_shipping_rates).and_return(true) - spree_put :update, params - + expect { + spree_put :update, params + }.to change { order.reload.state }.from("cart").to("payment") expect(response).to redirect_to spree.admin_order_payments_path(order) end end