mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-28 21:07:16 +00:00
77 lines
2.3 KiB
Ruby
77 lines
2.3 KiB
Ruby
require 'spec_helper'
|
|
|
|
module Api
|
|
describe StatesController do
|
|
render_views
|
|
|
|
let!(:state) { create(:state, :name => "Victoria") }
|
|
let(:attributes) { [:id, :name, :abbr, :country_id] }
|
|
let(:current_user) { create(:user) }
|
|
|
|
before do
|
|
allow(controller).to receive(:spree_current_user) { current_user }
|
|
end
|
|
|
|
it "gets all states" do
|
|
api_get :index
|
|
expect(json_response.first.symbolize_keys.keys).to include(*attributes)
|
|
expect(json_response.map { |state| state[:name] }).to include(state.name)
|
|
end
|
|
|
|
context "pagination" do
|
|
before do
|
|
Spree::State.should_receive(:all).and_return(@scope = double)
|
|
@scope.stub_chain(:ransack, :result, :includes, :order).and_return(@scope)
|
|
end
|
|
|
|
it "does not paginate states results when asked not to do so" do
|
|
@scope.should_not_receive(:page)
|
|
@scope.should_not_receive(:per)
|
|
api_get :index
|
|
end
|
|
|
|
it "paginates when page parameter is passed through" do
|
|
@scope.should_receive(:page).with(1).and_return(@scope)
|
|
@scope.should_receive(:per).with(nil)
|
|
api_get :index, :page => 1
|
|
end
|
|
|
|
it "paginates when per_page parameter is passed through" do
|
|
@scope.should_receive(:page).with(nil).and_return(@scope)
|
|
@scope.should_receive(:per).with(25)
|
|
api_get :index, :per_page => 25
|
|
end
|
|
end
|
|
|
|
|
|
context "with two states" do
|
|
before { create(:state, :name => "New South Wales") }
|
|
|
|
it "gets all states for a country" do
|
|
country = create(:country, :states_required => true)
|
|
state.country = country
|
|
state.save
|
|
|
|
api_get :index, :country_id => country.id
|
|
expect(json_response.first.symbolize_keys.keys).to include(*attributes)
|
|
expect(json_response.count).to eq 1
|
|
end
|
|
|
|
it "can view all states" do
|
|
api_get :index
|
|
expect(json_response.first.symbolize_keys.keys).to include(*attributes)
|
|
end
|
|
|
|
it 'can query the results through a paramter' do
|
|
api_get :index, :q => { :name_cont => 'Vic' }
|
|
expect(json_response.first['name']).to eq("Victoria")
|
|
end
|
|
end
|
|
|
|
it "can view a state" do
|
|
api_get :show, :id => state.id
|
|
expect(json_response.symbolize_keys.keys).to include(*attributes)
|
|
end
|
|
end
|
|
end
|