Calling Standing Orders index controller action using json returns serialized data

This commit is contained in:
Rob Harrington
2016-10-06 17:00:13 +11:00
parent a1ccf8a28e
commit 1d58ef55f7
2 changed files with 54 additions and 16 deletions

View File

@@ -1,3 +1,5 @@
require 'open_food_network/permissions'
module Admin
class StandingOrdersController < ResourceController
before_filter :load_shop, only: [:new]
@@ -13,6 +15,13 @@ module Admin
failure: lambda { render json: { errors: json_errors }, status: :unprocessable_entity }
} }
def index
respond_to do |format|
format.html
format.json { render_as_json @collection, ams_prefix: params[:ams_prefix] }
end
end
def new
@standing_order.shop = @shop
@customers = Customer.of(@shop)
@@ -23,8 +32,18 @@ module Admin
private
def permissions
return @permissions unless @permissions.nil?
@permissions = OpenFoodNetwork::Permissions.new(spree_current_user)
end
def collection
StandingOrder.where("1=0")
if request.format.json?
permissions.editable_standing_orders.ransack(params[:q]).result
.preload([:shop,:customer,:payment_method,:shipping_method])
else
StandingOrder.where("1=0")
end
end
def load_shop

View File

@@ -3,18 +3,19 @@ require 'spec_helper'
describe Admin::StandingOrdersController, type: :controller do
include AuthenticationWorkflow
describe 'index' do
let!(:user) { create(:user) }
let!(:shop) { create(:distributor_enterprise) }
let!(:standing_order) { create(:standing_order, shop: shop) }
before do
allow(controller).to receive(:spree_current_user) { user }
end
context 'html' do
let(:params) { { format: :html } }
context 'as an regular user' do
let!(:user) { create(:user) }
before do
allow(controller).to receive(:spree_current_user) { user }
end
context 'as a regular user' do
it 'renders the index page' do
spree_get :index, params
expect(response).to redirect_to spree.unauthorized_path
@@ -22,16 +23,34 @@ describe Admin::StandingOrdersController, type: :controller do
end
context 'as an enterprise user' do
let!(:user) { create(:user) }
let!(:enterprise) { create(:enterprise, owner: user) }
before { shop.update_attributes(owner: user) }
before do
allow(controller).to receive(:spree_current_user) { user }
end
it 'renders the index page' do
it 'renders the index page without loading any data' do
spree_get :index, params
expect(response).to render_template 'index'
expect(assigns(:collection)).to eq []
end
end
end
context 'json' do
let(:params) { { format: :json } }
context 'as a regular user' do
it 'renders the index page' do
spree_get :index, params
expect(response).to redirect_to spree.unauthorized_path
end
end
context 'as an enterprise user' do
before { shop.update_attributes(owner: user) }
it 'renders the collection as json' do
spree_get :index, params
json_response = JSON.parse(response.body)
expect(json_response.count).to be 1
expect(json_response[0]['id']).to eq standing_order.id
end
end
end