mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-13 04:00:21 +00:00
Merge pull request #5976 from luisramos0/address_form
Fix address state selector and "use billing address" checkbox in order customer details page
This commit is contained in:
77
spec/controllers/api/states_controller_spec.rb
Normal file
77
spec/controllers/api/states_controller_spec.rb
Normal file
@@ -0,0 +1,77 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
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
|
||||
expect(Spree::State).to receive(:all).and_return(@scope = double)
|
||||
allow(@scope).to receive_message_chain(:ransack, :result, :includes, :order).and_return(@scope)
|
||||
end
|
||||
|
||||
it "does not paginate states results when asked not to do so" do
|
||||
expect(@scope).not_to receive(:page)
|
||||
expect(@scope).not_to receive(:per)
|
||||
api_get :index
|
||||
end
|
||||
|
||||
it "paginates when page parameter is passed through" do
|
||||
expect(@scope).to receive(:page).with(1).and_return(@scope)
|
||||
expect(@scope).to receive(:per).with(nil)
|
||||
api_get :index, page: 1
|
||||
end
|
||||
|
||||
it "paginates when per_page parameter is passed through" do
|
||||
expect(@scope).to receive(:page).with(nil).and_return(@scope)
|
||||
expect(@scope).to 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
|
||||
Reference in New Issue
Block a user