From b14f27f956de1abc3f3e88f5a2f5ca5ef9519515 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 1 Mar 2018 16:44:36 +1100 Subject: [PATCH] Return an error if no order_cycle_set params are submitted to #bulk_update action --- app/controllers/admin/order_cycles_controller.rb | 7 ++++++- config/locales/en.yml | 2 ++ spec/controllers/admin/order_cycles_controller_spec.rb | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index 3887c9bdf8..af4d806811 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -10,6 +10,7 @@ module Admin before_filter :require_coordinator, only: :new before_filter :remove_protected_attrs, only: [:update] before_filter :check_editable_schedule_ids, only: [:create, :update] + before_filter :require_order_cycle_set_params, only: [:bulk_update] around_filter :protect_invalid_destroy, only: :destroy create.after :sync_subscriptions update.after :sync_subscriptions @@ -218,10 +219,14 @@ module Admin end def order_cycle_set - return unless params[:order_cycle_set] OrderCycleSet.new(@order_cycles, params[:order_cycle_set]) end + def require_order_cycle_set_params + return if params[:order_cycle_set] + render json: { errors: t('admin.order_cycles.bulk_update.no_data') }, status: :unprocessable_entity + end + def ams_prefix_whitelist [:basic, :index] end diff --git a/config/locales/en.yml b/config/locales/en.yml index 02f820dd5c..9e173bb183 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -811,6 +811,8 @@ en: destroy_errors: orders_present: That order cycle has been selected by a customer and cannot be deleted. To prevent customers from accessing it, please close it instead. schedule_present: That order cycle is linked to a schedule and cannot be deleted. Please unlink or delete the schedule first. + bulk_update: + no_data: Hm, something went wrong. No order cycle data found. producer_properties: index: title: Producer Properties diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index e26eb28e0f..7c7e20336e 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -222,8 +222,10 @@ module Admin it "does nothing when no data is supplied" do expect do - spree_put :bulk_update + spree_put :bulk_update, format: :json end.to change(oc, :orders_open_at).by(0) + json_response = JSON.parse(response.body) + expect(json_response['errors']).to eq I18n.t('admin.order_cycles.bulk_update.no_data') end end