mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Calling Standing Orders index controller action using json returns serialized data
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user