From 9c3ae0fce890e06e501cc82a216c3e74f627b304 Mon Sep 17 00:00:00 2001 From: v10110 Date: Fri, 20 Aug 2021 11:43:41 +0200 Subject: [PATCH] Display addresses from countries supported in the current store --- .../storefront/account/addresses_controller.rb | 4 +++- .../v2/storefront/account/addresses_spec.rb | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/api/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb b/api/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb index 6924f8ac671..d8f103c1831 100644 --- a/api/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +++ b/api/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb @@ -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 @@ -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 diff --git a/api/spec/requests/spree/api/v2/storefront/account/addresses_spec.rb b/api/spec/requests/spree/api/v2/storefront/account/addresses_spec.rb index 4fc09c1b705..b471ca49766 100644 --- a/api/spec/requests/spree/api/v2/storefront/account/addresses_spec.rb +++ b/api/spec/requests/spree/api/v2/storefront/account/addresses_spec.rb @@ -67,6 +67,24 @@ end end + context 'when address from countries that are supported in the current store' do + let(:current_store) { Spree::Store.first } + 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) } + + before do + current_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 without user exists' do let!(:address) { create(:address, user_id: nil) }