diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb index c2a9460447..c68cbdac7c 100644 --- a/app/controllers/admin/enterprises_controller.rb +++ b/app/controllers/admin/enterprises_controller.rb @@ -234,8 +234,10 @@ module Admin end def update_enterprise_notifications - if params.key? :receives_notifications - @enterprise.update_contact params[:receives_notifications] + user_id = params[:receives_notifications].to_i + + if user_id.positive? && @enterprise.user_ids.include?(user_id) + @enterprise.update_contact(user_id) end end diff --git a/spec/controllers/admin/enterprises_controller_spec.rb b/spec/controllers/admin/enterprises_controller_spec.rb index 00bd934860..48a7b3d1a7 100644 --- a/spec/controllers/admin/enterprises_controller_spec.rb +++ b/spec/controllers/admin/enterprises_controller_spec.rb @@ -162,6 +162,28 @@ describe Admin::EnterprisesController, type: :controller do expect(distributor.users).to_not include user end + it "updates the contact for notifications" do + allow(controller).to receive_messages spree_current_user: distributor_manager + params = { + id: distributor, + receives_notifications: distributor_manager.id, + } + + expect { spree_post :update, params }. + to change { distributor.contact }.to(distributor_manager) + end + + it "updates the contact for notifications" do + allow(controller).to receive_messages spree_current_user: distributor_manager + params = { + id: distributor, + receives_notifications: "? object:null ?", + } + + expect { spree_post :update, params }. + to_not change { distributor.contact } + end + it "updates enterprise preferences" do allow(controller).to receive_messages spree_current_user: distributor_manager update_params = { id: distributor,