Enterprise index action load enterprise_set for super admin

This commit is contained in:
Rob Harrington
2015-06-12 00:56:10 +08:00
parent f80a5fe558
commit 64ed80f845
2 changed files with 55 additions and 20 deletions

View File

@@ -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).

View File

@@ -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