From c311bcdca7264670f578b96ad750d0efe66bf637 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 4 Jun 2015 12:03:02 +0800 Subject: [PATCH] Overriding enterprises index action to use AMS for json requests, and prevent collection loading for html requests --- .../admin/enterprises_controller.rb | 14 +++++++++- .../admin/enterprises_controller_spec.rb | 26 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb index e50779c3ff..8ef3021f54 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, :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). diff --git a/spec/controllers/admin/enterprises_controller_spec.rb b/spec/controllers/admin/enterprises_controller_spec.rb index 79f72cfac3..fdff8bd354 100644 --- a/spec/controllers/admin/enterprises_controller_spec.rb +++ b/spec/controllers/admin/enterprises_controller_spec.rb @@ -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