From d0b7a0795dec5269875287d1f0bf29c7ae9465f4 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Tue, 30 Jun 2015 11:23:13 +1000 Subject: [PATCH] Fix 500 when bulk updating order cycles with no data --- app/controllers/admin/order_cycles_controller.rb | 14 ++++++++------ .../admin/order_cycles_controller_spec.rb | 6 ++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index fe1157a7f3..57e77123eb 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -65,8 +65,8 @@ module Admin end def bulk_update - @order_cycle_set = OrderCycleSet.new(params[:order_cycle_set]) - if @order_cycle_set.save + @order_cycle_set = params[:order_cycle_set] && OrderCycleSet.new(params[:order_cycle_set]) + if @order_cycle_set.andand.save redirect_to main_app.admin_order_cycles_path, :notice => 'Order cycles have been updated.' else render :index @@ -132,10 +132,12 @@ module Admin end def remove_unauthorized_bulk_attrs - params[:order_cycle_set][:collection_attributes].each do |i, hash| - order_cycle = OrderCycle.find(hash[:id]) - unless Enterprise.managed_by(spree_current_user).include?(order_cycle.andand.coordinator) - params[:order_cycle_set][:collection_attributes].delete i + if params.key? :order_cycle_set + params[:order_cycle_set][:collection_attributes].each do |i, hash| + order_cycle = OrderCycle.find(hash[:id]) + unless Enterprise.managed_by(spree_current_user).include?(order_cycle.andand.coordinator) + params[:order_cycle_set][:collection_attributes].delete i + end end end end diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index 9e996f0da7..8200b0d037 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -75,6 +75,12 @@ module Admin expect(oc.orders_open_at.to_date).to eq Date.today - 21.days expect(oc.orders_close_at.to_date).to eq Date.today + 21.days end + + it "does nothing when no data is supplied" do + expect do + spree_put :bulk_update + end.to change(oc, :orders_open_at).by(0) + end end context "when I do not manage the coordinator of an order cycle" do