Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SD-1377] Display addresses from countries supported in the current store #11271

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -4,6 +4,8 @@ module V2
module Storefront
module Account
class AddressesController < ::Spree::Api::V2::ResourceController
include Spree::BaseHelper

before_action :require_spree_current_user

def create
Expand Down Expand Up @@ -37,7 +39,7 @@ def collection
end

def scope
super.where(user: spree_current_user).not_deleted
super.where(user: spree_current_user, country: available_countries).not_deleted
end

def model_class
Expand Down
Expand Up @@ -6,6 +6,7 @@
let!(:addresses) { create_list(:address, 3, user_id: user.id) }
let!(:country) { create(:country, iso: 'GBR') }
let!(:state) { create(:state, country: country) }
let(:store) { Spree::Store.default }

shared_examples 'returns valid user addresses resource JSON' do
it 'returns a valid user addresses resource JSON response' do
Expand Down Expand Up @@ -67,6 +68,40 @@
end
end

context 'when address from countries that are supported in the current store' do
let(:country) { create(:country, name: 'France') }
let(:zone) { create(:zone, name: 'EU_VAT', countries: [country], kind: 'country') }
let!(:eu_address) { create(:address, user_id: user.id, country: country) }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@v10110 let's also create another address for this user from a country that isn't supported by this store to test if it doesn't show up


before do
store.update(checkout_zone: zone)
get '/api/v2/storefront/account/addresses', headers: headers_bearer
end

it 'should return addresses from supported countries' do
expect(user.addresses.size).to eq 4
expect(json_response['data'].size).to eq 1
expect(json_response['data'][0]).to have_attribute(:country_name).with_value(eu_address.country.name)
end
end

context 'when address from countries that are not supported in the current store' do
let(:eu_country) { create(:country, name: 'France') }
let(:zone) { create(:zone, name: 'EU_VAT', countries: [eu_country], kind: 'country') }
let(:country) { create(:country) }
let!(:us_address) { create(:address, user_id: user.id, country: country) }

before do
store.update(checkout_zone: zone)
get '/api/v2/storefront/account/addresses', headers: headers_bearer
end

it 'should not return addresses from not supported countries' do
expect(user.addresses.size).to eq 4
expect(json_response['data'].size).to eq 0
end
end

context 'when address without user exists' do
let!(:address) { create(:address, user_id: nil) }

Expand Down