From 64ed80f845d82b2f3f533fedd06a89fc5955853a Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 12 Jun 2015 00:56:10 +0800 Subject: [PATCH] Enterprise index action load enterprise_set for super admin --- .../admin/enterprises_controller.rb | 15 +++-- .../admin/enterprises_controller_spec.rb | 60 ++++++++++++++----- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb index 7f6d576044..9bbe0e57ea 100644 --- a/app/controllers/admin/enterprises_controller.rb +++ b/app/controllers/admin/enterprises_controller.rb @@ -2,7 +2,7 @@ require 'open_food_network/referer_parser' module Admin class EnterprisesController < ResourceController - # before_filter :load_enterprise_set, :only => :index + before_filter :load_enterprise_set, :only => :index before_filter :load_countries, :except => [:index, :register, :check_permalink] before_filter :load_methods_and_fees, :only => [:new, :edit, :update, :create] before_filter :load_groups, :only => [:new, :edit, :update, :create] @@ -125,7 +125,7 @@ module Admin private def load_enterprise_set - @enterprise_set = EnterpriseSet.new collection + @enterprise_set = EnterpriseSet.new(collection) if spree_current_user.admin? end def load_countries @@ -140,8 +140,15 @@ module Admin order_cycle = OrderCycle.new(coordinator: coordinator) if order_cycle.nil? && coordinator.present? return OpenFoodNetwork::OrderCyclePermissions.new(spree_current_user, order_cycle).visible_enterprises when :index - return Enterprise.where("1=0") unless json_request? - OpenFoodNetwork::Permissions.new(spree_current_user).editable_enterprises + if spree_current_user.admin? + OpenFoodNetwork::Permissions.new(spree_current_user). + editable_enterprises. + order('is_primary_producer ASC, name') + elsif json_request? + OpenFoodNetwork::Permissions.new(spree_current_user).editable_enterprises + else + Enterprise.where("1=0") unless json_request? + end else # TODO was ordered with is_distributor DESC as well, not sure why or how we want to sort this now OpenFoodNetwork::Permissions.new(spree_current_user). diff --git a/spec/controllers/admin/enterprises_controller_spec.rb b/spec/controllers/admin/enterprises_controller_spec.rb index 7816550ea0..ef31b779c9 100644 --- a/spec/controllers/admin/enterprises_controller_spec.rb +++ b/spec/controllers/admin/enterprises_controller_spec.rb @@ -516,27 +516,55 @@ module Admin end describe "index" do - let!(:user) { create_enterprise_user(enterprise_limit: 10) } - let!(:enterprise1) { create(:enterprise, sells: 'any', owner: user) } - let!(:enterprise2) { create(:enterprise, sells: 'own', owner: user) } - let!(:enterprise3) { create(:enterprise, sells: 'any', owner: create_enterprise_user ) } + context "as super admin" do + let(:super_admin) { create(:admin_user) } + let!(:user) { create_enterprise_user(enterprise_limit: 10) } + let!(:enterprise1) { create(:enterprise, sells: 'any', owner: user) } + let!(:enterprise2) { create(:enterprise, sells: 'own', owner: user) } + let!(:enterprise3) { create(:enterprise, sells: 'any', owner: create_enterprise_user ) } - before do - controller.stub spree_current_user: user - end + before do + controller.stub spree_current_user: super_admin + end - context "html" do - it "returns an empty @collection" do - spree_get :index, format: :html - expect(assigns(:collection)).to eq [] + context "html" do + it "returns all enterprises" do + spree_get :index, format: :html + expect(assigns(:collection)).to include enterprise1, enterprise2, enterprise3 + end + end + + context "json" do + it "returns all enterprises" do + spree_get :index, format: :json + expect(assigns(:collection)).to include enterprise1, enterprise2, enterprise3 + end end end - context "json" do - it "scopes @collection to enterprises editable by the user" do - spree_get :index, format: :json - expect(assigns(:collection)).to include enterprise1, enterprise2 - expect(assigns(:collection)).to_not include enterprise3 + context "as an enterprise user" do + let!(:user) { create_enterprise_user(enterprise_limit: 10) } + let!(:enterprise1) { create(:enterprise, sells: 'any', owner: user) } + let!(:enterprise2) { create(:enterprise, sells: 'own', owner: user) } + let!(:enterprise3) { create(:enterprise, sells: 'any', owner: create_enterprise_user ) } + + before do + controller.stub spree_current_user: user + end + + context "html" do + it "returns an empty @collection" do + spree_get :index, format: :html + expect(assigns(:collection)).to eq [] + end + end + + context "json" do + it "scopes @collection to enterprises editable by the user" do + spree_get :index, format: :json + expect(assigns(:collection)).to include enterprise1, enterprise2 + expect(assigns(:collection)).to_not include enterprise3 + end end end end