Skip to content

Commit

Permalink
[SD-841] Adds AddressesHelper#user_available_addresses (#10019)
Browse files Browse the repository at this point in the history
  • Loading branch information
PSzyszkaSpark authored and damianlegawiec committed Mar 5, 2020
1 parent a0c8f48 commit a03bf93
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 1 deletion.
6 changes: 6 additions & 0 deletions frontend/app/helpers/spree/addresses_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,11 @@ def address_state(form, country, _address_id = 'b')
content_tag(:noscript, form.text_field(:state_name, class: 'required')) +
javascript_tag("document.write(\"<span class='d-block position-relative'>#{state_elements.html_safe}</span>\");")
end

def user_available_addresses
return unless try_spree_current_user

try_spree_current_user.addresses.where(country: available_countries)
end
end
end
2 changes: 1 addition & 1 deletion frontend/app/views/spree/checkout/_address.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<% @addresses = try_spree_current_user ? try_spree_current_user.addresses : [] %>
<% @addresses = try_spree_current_user ? user_available_addresses : [] %>
<% if !try_spree_current_user || try_spree_current_user.email.blank? %>
<div class="row">
Expand Down
48 changes: 48 additions & 0 deletions frontend/spec/helpers/address_helper_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
require 'spec_helper'

describe Spree::AddressesHelper, type: :helper do
describe '#user_available_addresses' do
let!(:user) { create(:user) }

let!(:united_states) { create(:country, name: 'United States') }
let!(:poland) { create(:country, name: 'Poland') }
let!(:china) { create(:country, name: 'China') }
let!(:ukraine) { create(:country, name: 'Ukraine') }

let!(:address_1) { create(:address, country_id: united_states.id, state_id: united_states.states.first, user: user) }
let!(:address_2) { create(:address, country_id: poland.id, state_id: poland.states.first, user: user) }
let!(:address_3) { create(:address, country_id: china.id, state_id: china.states.first, user: user) }

context 'when user is present' do
subject { user_available_addresses }

context 'when available countries do not includes user addresses countries' do
it 'returns an empty array' do
allow_any_instance_of(Spree::AddressesHelper).to receive(:try_spree_current_user).and_return(user)
allow_any_instance_of(Spree::AddressesHelper).to receive(:available_countries).and_return([ukraine])

expect(subject).to match_array []
end
end

context 'when available countries includes user addresses countries' do
it 'returns that addresses' do
allow_any_instance_of(Spree::AddressesHelper).to receive(:try_spree_current_user).and_return(user)
allow_any_instance_of(Spree::AddressesHelper).to receive(:available_countries).and_return([poland, united_states])

expect(subject).to match_array [address_1, address_2]
end
end
end

context 'when user is absent' do
subject { user_available_addresses }

it 'returns nil' do
allow_any_instance_of(Spree::AddressesHelper).to receive(:try_spree_current_user).and_return(nil)

expect(subject).to eq nil
end
end
end
end

0 comments on commit a03bf93

Please sign in to comment.