From ef91f8d17ffe14fde9aaea4ce0273b91a5f2bcf8 Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Tue, 20 May 2014 16:04:53 +1000 Subject: [PATCH] Redirecting if cart is empty and activating the empty cart link --- app/controllers/spree/orders_controller_decorator.rb | 10 ++++++++++ app/views/spree/orders/_form.html.haml | 5 +++-- spec/controllers/spree/orders_controller_spec.rb | 11 +++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/controllers/spree/orders_controller_decorator.rb b/app/controllers/spree/orders_controller_decorator.rb index af1d5621c5..ce20dfd58d 100644 --- a/app/controllers/spree/orders_controller_decorator.rb +++ b/app/controllers/spree/orders_controller_decorator.rb @@ -11,6 +11,16 @@ Spree::OrdersController.class_eval do include OrderCyclesHelper layout 'darkswarm' + # Patching to redirect to shop if order is empty + def edit + @order = current_order(true) + if @order.line_items.empty? + redirect_to main_app.shop_path + else + associate_user + end + end + # Patch Orders#populate to populate multi_cart (if enabled) def populate if OpenFoodNetwork::FeatureToggle.enabled? :multi_cart diff --git a/app/views/spree/orders/_form.html.haml b/app/views/spree/orders/_form.html.haml index 09b3b72c22..3723299f84 100644 --- a/app/views/spree/orders/_form.html.haml +++ b/app/views/spree/orders/_form.html.haml @@ -39,7 +39,8 @@ %td#empty-cart / This needs help from Will - would like a link not button %span#clear_cart_link{"data-hook" => ""} - = form_tag empty_cart_path, :method => :put do - = submit_tag t(:empty_cart), :class => 'button alert expand small' + = link_to "Empty cart", empty_cart_path, method: :put + -#= form_tag empty_cart_path, :method => :put do + -#= submit_tag t(:empty_cart), :class => 'button alert expand small' = render "spree/orders/adjustments" unless @order.adjustments.eligible.blank? diff --git a/spec/controllers/spree/orders_controller_spec.rb b/spec/controllers/spree/orders_controller_spec.rb index a9118355d6..53c7be68f0 100644 --- a/spec/controllers/spree/orders_controller_spec.rb +++ b/spec/controllers/spree/orders_controller_spec.rb @@ -2,12 +2,23 @@ require 'spec_helper' describe Spree::OrdersController do let(:distributor) { double(:distributor) } + let(:order) { create(:order) } + let(:order_cycle) { create(:simple_order_cycle) } it "redirects home when no distributor is selected" do spree_get :edit response.should redirect_to root_path end + it "redirects to shop when order is empty" do + controller.stub(:current_distributor).and_return(distributor) + controller.stub(:current_order_cycle).and_return(order_cycle) + controller.stub(:current_order).and_return order + order.stub_chain(:line_items, :empty?).and_return true + spree_get :edit + response.should redirect_to shop_path + end + it "redirects to the shop when no order cycle is selected" do controller.stub(:current_distributor).and_return(distributor) spree_get :edit