From 7bef474efda2d0c5f865f4a22785a026b11060d3 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Sat, 9 Jun 2018 02:24:32 +0100 Subject: [PATCH 1/4] Admin Order guest checkout status --- .../orders/customer_details_controller_decorator.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb b/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb index 19dd3aae65..a8ce4dad59 100644 --- a/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb +++ b/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb @@ -1,7 +1,20 @@ Spree::Admin::Orders::CustomerDetailsController.class_eval do + before_filter :set_guest_checkout_status, only: :update + # Inherit CanCan permissions for the current order def model_class load_order unless @order @order end + + private + + def set_guest_checkout_status + registered_user = Spree::User.find_by_email(params[:order][:email]) + + params[:order][:guest_checkout] = registered_user.nil? + + return unless registered_user + @order.user_id = registered_user.id + end end From d90e362e6fde187d27090cf514003a3070573826 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Sat, 9 Jun 2018 02:41:45 +0100 Subject: [PATCH 2/4] Remove guest checkout radio buttons from admin order view --- .../admin/orders/directives/customer_search_override.js.coffee | 3 --- .../_form/make_email_fullwidth.html.haml.deface | 2 ++ .../customer_details/_form/remove_guest_order_buttons.deface | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 app/overrides/spree/admin/orders/customer_details/_form/make_email_fullwidth.html.haml.deface create mode 100644 app/overrides/spree/admin/orders/customer_details/_form/remove_guest_order_buttons.deface diff --git a/app/assets/javascripts/admin/orders/directives/customer_search_override.js.coffee b/app/assets/javascripts/admin/orders/directives/customer_search_override.js.coffee index 08d4ceeb5d..76200d92ff 100644 --- a/app/assets/javascripts/admin/orders/directives/customer_search_override.js.coffee +++ b/app/assets/javascripts/admin/orders/directives/customer_search_override.js.coffee @@ -56,7 +56,4 @@ angular.module("admin.orders").directive 'customerSearchOverride', -> return $('#order_email').val customer.email $('#user_id').val customer.user_id # modified - $('#guest_checkout_true').prop 'checked', false - $('#guest_checkout_false').prop 'checked', true - $('#guest_checkout_false').prop 'disabled', false customer.email diff --git a/app/overrides/spree/admin/orders/customer_details/_form/make_email_fullwidth.html.haml.deface b/app/overrides/spree/admin/orders/customer_details/_form/make_email_fullwidth.html.haml.deface new file mode 100644 index 0000000000..409c3c90ab --- /dev/null +++ b/app/overrides/spree/admin/orders/customer_details/_form/make_email_fullwidth.html.haml.deface @@ -0,0 +1,2 @@ +/ set_attributes "div[data-hook='customer_fields'] div.alpha" +/ attributes({class: "fullwidth"}) diff --git a/app/overrides/spree/admin/orders/customer_details/_form/remove_guest_order_buttons.deface b/app/overrides/spree/admin/orders/customer_details/_form/remove_guest_order_buttons.deface new file mode 100644 index 0000000000..f94267be6f --- /dev/null +++ b/app/overrides/spree/admin/orders/customer_details/_form/remove_guest_order_buttons.deface @@ -0,0 +1 @@ +remove "div[data-hook='customer_fields'] div.omega" From c7f7541e2dbd0866aaa47ae9111d17a5c7978239 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Sun, 10 Jun 2018 02:32:59 +0100 Subject: [PATCH 3/4] Admin order customer details spec --- .../customer_details_controller_spec.rb | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 spec/controllers/spree/admin/orders/customer_details_controller_spec.rb diff --git a/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb b/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb new file mode 100644 index 0000000000..cd1a04a4dd --- /dev/null +++ b/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb @@ -0,0 +1,65 @@ +require 'spec_helper' + +describe Spree::Admin::Orders::CustomerDetailsController, type: :controller do + include AuthenticationWorkflow + + describe "#update" do + context "adding customer details via newly created admin order" do + let!(:user) { create(:user) } + let(:address) { create(:address) } + let!(:distributor) { create(:distributor_enterprise) } + let!(:shipping_method) { create(:shipping_method) } + let!(:order) { + create( + :order_with_totals_and_distribution, + state: 'cart', + shipping_method: shipping_method, + distributor: distributor, + user: nil, + email: nil, + bill_address: nil, + ship_address: nil, + ) + } + let(:address_params) { + { + firstname: address.firstname, + lastname: address.lastname, + address1: address.address1, + address2: address.address2, + city: address.city, + zipcode: address.zipcode, + country_id: address.country_id, + state_id: address.state_id, + phone: address.phone + } + } + + before do + login_as_enterprise_user [order.distributor] + end + + it "accepts registered users" do + spree_post :update, order: { email: user.email, bill_address_attributes: address_params, ship_address_attributes: address_params }, order_id: order.number + + order.reload + + expect(response).to redirect_to spree.edit_admin_order_shipment_path(order, order.shipment) + expect(order.email).to eq user.email + expect(order.user_id).to eq user.id + expect(order.ship_address).to_not be_nil + end + + it "accepts unregistered users" do + spree_post :update, order: { email: 'unregistered@email.com', bill_address_attributes: address_params, ship_address_attributes: address_params }, order_id: order.number + + order.reload + + expect(response).to redirect_to spree.edit_admin_order_shipment_path(order, order.shipment) + expect(order.email).to eq 'unregistered@email.com' + expect(order.user_id).to be_nil + expect(order.ship_address).to_not be_nil + end + end + end +end From ea0d24a5bfdf1c06c8bfd28f48e0438b7cad9c19 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Tue, 12 Jun 2018 13:20:00 +0100 Subject: [PATCH 4/4] Re-word test names for clarity --- .../customer_details_controller_spec.rb | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb b/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb index cd1a04a4dd..bd78bc2fd9 100644 --- a/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +++ b/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb @@ -39,26 +39,24 @@ describe Spree::Admin::Orders::CustomerDetailsController, type: :controller do login_as_enterprise_user [order.distributor] end - it "accepts registered users" do - spree_post :update, order: { email: user.email, bill_address_attributes: address_params, ship_address_attributes: address_params }, order_id: order.number + context "when adding details of a registered user" do + it "redirects to shipments on success" do + spree_post :update, order: { email: user.email, bill_address_attributes: address_params, ship_address_attributes: address_params }, order_id: order.number - order.reload + order.reload - expect(response).to redirect_to spree.edit_admin_order_shipment_path(order, order.shipment) - expect(order.email).to eq user.email - expect(order.user_id).to eq user.id - expect(order.ship_address).to_not be_nil + expect(response).to redirect_to spree.edit_admin_order_shipment_path(order, order.shipment) + end end - it "accepts unregistered users" do - spree_post :update, order: { email: 'unregistered@email.com', bill_address_attributes: address_params, ship_address_attributes: address_params }, order_id: order.number + context "when adding details of an unregistered user" do + it "redirects to shipments on success" do + spree_post :update, order: { email: 'unregistered@email.com', bill_address_attributes: address_params, ship_address_attributes: address_params }, order_id: order.number - order.reload + order.reload - expect(response).to redirect_to spree.edit_admin_order_shipment_path(order, order.shipment) - expect(order.email).to eq 'unregistered@email.com' - expect(order.user_id).to be_nil - expect(order.ship_address).to_not be_nil + expect(response).to redirect_to spree.edit_admin_order_shipment_path(order, order.shipment) + end end end end