From a90cd0f8e089a1bdb262d16dc4b8b9ed53b29bbc Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 10 Jun 2015 17:17:55 +0800 Subject: [PATCH] Owners can update sells on enterprises they own --- .../admin/enterprises_controller.rb | 6 +++-- .../admin/enterprises_controller_spec.rb | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb index 276a0ad333..cd13055a02 100644 --- a/app/controllers/admin/enterprises_controller.rb +++ b/app/controllers/admin/enterprises_controller.rb @@ -171,13 +171,15 @@ module Admin def check_can_change_bulk_sells unless spree_current_user.admin? params[:enterprise_set][:collection_attributes].each do |i, enterprise_params| - enterprise_params.delete :sells + enterprise_params.delete :sells unless spree_current_user == Enterprise.find_by_id(enterprise_params[:id]).owner end end end def check_can_change_sells - params[:enterprise].delete :sells unless spree_current_user.admin? + unless spree_current_user.admin? || spree_current_user == @enterprise.owner + params[:enterprise].delete :sells + end end def override_owner diff --git a/spec/controllers/admin/enterprises_controller_spec.rb b/spec/controllers/admin/enterprises_controller_spec.rb index fdff8bd354..66512cfab9 100644 --- a/spec/controllers/admin/enterprises_controller_spec.rb +++ b/spec/controllers/admin/enterprises_controller_spec.rb @@ -184,6 +184,15 @@ module Admin end context "as owner" do + it "allows 'sells' to be changed" do + controller.stub spree_current_user: profile_enterprise.owner + enterprise_params = { id: profile_enterprise, enterprise: { sells: 'any' } } + + spree_put :update, enterprise_params + profile_enterprise.reload + expect(profile_enterprise.sells).to eq 'any' + end + it "allows owner to be changed" do controller.stub spree_current_user: distributor_owner update_params = { id: distributor, enterprise: { owner_id: distributor_manager } } @@ -386,6 +395,21 @@ module Admin end end + context "as the owner of an enterprise" do + it "allows 'sells' and 'owner' to be changed" do + controller.stub spree_current_user: original_owner + bulk_enterprise_params = { enterprise_set: { collection_attributes: { '0' => { id: profile_enterprise1.id, sells: 'any', owner_id: new_owner.id }, '1' => { id: profile_enterprise2.id, sells: 'any', owner_id: new_owner.id } } } } + + spree_put :bulk_update, bulk_enterprise_params + profile_enterprise1.reload + profile_enterprise2.reload + expect(profile_enterprise1.sells).to eq 'any' + expect(profile_enterprise2.sells).to eq 'any' + expect(profile_enterprise1.owner).to eq original_owner + expect(profile_enterprise2.owner).to eq original_owner + end + end + context "as super admin" do it "allows 'sells' and 'owner' to be changed" do profile_enterprise1.enterprise_roles.build(user: new_owner).save