mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-04-03 06:59:14 +00:00
Overriding enterprises index action to use AMS for json requests, and prevent collection loading for html requests
This commit is contained in:
@@ -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, :set_sells, :check_permalink]
|
||||
before_filter :load_methods_and_fees, :only => [:new, :edit, :update, :create]
|
||||
before_filter :load_groups, :only => [:new, :edit, :update, :create]
|
||||
@@ -23,6 +23,15 @@ module Admin
|
||||
include ActionView::Helpers::TextHelper
|
||||
include OrderCyclesHelper
|
||||
|
||||
def index
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.json do
|
||||
render json: @collection, each_serializer: Api::Admin::BasicEnterpriseSerializer
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def set_sells
|
||||
enterprise = Enterprise.find_by_permalink(params[:id]) || Enterprise.find(params[:id])
|
||||
attributes = { sells: params[:sells] }
|
||||
@@ -112,6 +121,9 @@ module Admin
|
||||
coordinator = Enterprise.find_by_id(params[:coordinator_id]) if params[:coordinator_id]
|
||||
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
|
||||
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).
|
||||
|
||||
@@ -449,5 +449,31 @@ module Admin
|
||||
end
|
||||
end
|
||||
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 ) }
|
||||
|
||||
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
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user