Skip to content

Commit

Permalink
Show service areas on guest show partner page
Browse files Browse the repository at this point in the history
  • Loading branch information
ivankocienski committed Feb 17, 2022
1 parent 9851679 commit c5e061a
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 0 deletions.
15 changes: 15 additions & 0 deletions app/helpers/partners_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,19 @@ def options_for_service_area_neighbourhoods
@all_neighbourhoods.filter { |e| e.name != '' }
.collect { |e| { name: e.contextual_name, id: e.id } }
end

def partner_service_area_text(partner)
neighbourhoods = partner.service_area_neighbourhoods.order(:name).all

if neighbourhoods.length == 1
neighbourhoods.first.name

else
head = neighbourhoods[0..-2]
tail = neighbourhoods[-1]

"#{head.map(&:name).join(', ')} and #{tail.name}"
end
end

end
4 changes: 4 additions & 0 deletions app/models/partner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@ def should_generate_new_friendly_id?
slug.blank?
end

def has_service_areas?
service_areas.count > 0
end

def permalink
"https://placecal.org/partners/#{id}"
end
Expand Down
3 changes: 3 additions & 0 deletions app/views/partners/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
%>

<h3 class="udl udl--fw allcaps h4">Address</h3>
<% if @partner.has_service_areas? %>
<p>We operate in <%= partner_service_area_text(@partner) %>.</p>
<% end %>
<%= render_component "address",
address: @partner.address
%>
Expand Down
43 changes: 43 additions & 0 deletions test/helpers/partners_helper_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# frozen_string_literal: true

require 'test_helper'

class PartnersHelperTest < ActionView::TestCase
setup do
@partner = FactoryBot.create(:partner)
@hoods = [
FactoryBot.create(:neighbourhood, name: 'alpha'),
FactoryBot.create(:neighbourhood, name: 'beta'),
FactoryBot.create(:neighbourhood, name: 'cappa')
]
end

# testing partner_service_area_text

test "shows only one text correctly" do
@partner.service_areas.create neighbourhood: @hoods[0]

output = partner_service_area_text(@partner)

assert output == 'alpha'
end

test "shows two texts correctly" do
@partner.service_areas.create neighbourhood: @hoods[0]
@partner.service_areas.create neighbourhood: @hoods[1]

output = partner_service_area_text(@partner)

assert output == 'alpha and beta'
end

test "shows N texts correctly" do
@partner.service_areas.create neighbourhood: @hoods[0]
@partner.service_areas.create neighbourhood: @hoods[1]
@partner.service_areas.create neighbourhood: @hoods[2]

output = partner_service_area_text(@partner)

assert output == 'alpha, beta and cappa'
end
end

0 comments on commit c5e061a

Please sign in to comment.