From ee0a10855d17067a0639a6660b431e77498983e2 Mon Sep 17 00:00:00 2001 From: taitus Date: Mon, 24 Jul 2017 19:59:25 +0200 Subject: [PATCH] Calculate carousel size. --- app/helpers/welcome_helper.rb | 25 +++++++++++ app/views/welcome/_recommended.html.erb | 43 +++++++++++-------- .../welcome/_recommended_carousel.html.erb | 2 +- app/views/welcome/index.html.erb | 14 ++++-- spec/features/home_spec.rb | 38 ++++++++++++++++ 5 files changed, 100 insertions(+), 22 deletions(-) diff --git a/app/helpers/welcome_helper.rb b/app/helpers/welcome_helper.rb index c4ff759fb..36ae0ed4a 100644 --- a/app/helpers/welcome_helper.rb +++ b/app/helpers/welcome_helper.rb @@ -30,4 +30,29 @@ module WelcomeHelper image_tag(image_path) if image_path.present? end + def calculate_size(debates, proposals, budget_investments) + size = debates.any? && proposals.any? && budget_investments.any? ? 4 : 6 + "medium-#{size} large-#{size}" + end + + def calculate_centered(debates, proposals, budget_investments) + centered = "" + if debates.blank? && proposals.blank? || + debates.blank? && budget_investments.blank? || + proposals.blank? && budget_investments.blank? + centered = "medium-centered large-centered" + end + centered + end + + def calculate_centered_and_size_class(debates, proposals, budget_investments) + size = calculate_size(debates, proposals, budget_investments) + centered = calculate_centered(debates, proposals, budget_investments) + "#{size} #{centered if centered.present?}" + end + + def display_recommendeds(debates, proposals, budget_investments) + debates.any? || proposals.any? || budget_investments.any? + end + end diff --git a/app/views/welcome/_recommended.html.erb b/app/views/welcome/_recommended.html.erb index 974e6ae68..3460c3a24 100644 --- a/app/views/welcome/_recommended.html.erb +++ b/app/views/welcome/_recommended.html.erb @@ -3,26 +3,33 @@

<%= t("welcome.recommended.title") %>

diff --git a/app/views/welcome/_recommended_carousel.html.erb b/app/views/welcome/_recommended_carousel.html.erb index bf7d102c1..46d307b8c 100644 --- a/app/views/welcome/_recommended_carousel.html.erb +++ b/app/views/welcome/_recommended_carousel.html.erb @@ -1,4 +1,4 @@ -
+

<%= t("welcome.recommended.#{key.underscore}.title") %>

diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index f7a4e12e1..af894f023 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -47,7 +47,15 @@ <% end %> <% if current_user.present? %> - <%= render "recommended", recommended_debates: current_user.recommended_debates, - recommended_proposals: current_user.recommended_proposals, - recommended_budget_investments: current_user.recommended_budget_investments %> + + <% recommended_debates = current_user.recommended_debates %> + <% recommended_proposals = current_user.recommended_proposals %> + <% recommended_budget_investments = current_user.recommended_budget_investments %> + + <% if display_recommendeds(recommended_debates, recommended_proposals, recommended_budget_investments) %> + <%= render "recommended", recommended_debates: recommended_debates, + recommended_proposals: recommended_proposals, + recommended_budget_investments: recommended_budget_investments %> + <% end %> + <% end %> diff --git a/spec/features/home_spec.rb b/spec/features/home_spec.rb index 096c92a97..834434828 100644 --- a/spec/features/home_spec.rb +++ b/spec/features/home_spec.rb @@ -81,6 +81,44 @@ feature "Home" do expect(current_path).to eq debate_path(debate) end + + scenario 'Do not display recommended section when there are not debates, proposals and investments' do + visit root_path + + expect(page).not_to have_content "Recommendations that may interest you" + end + + feature 'Dynamic display' do + + scenario 'Display debates centered when there are not proposals and investments' do + debate = create(:debate) + + visit root_path + + expect(page).to have_selector('.medium-6.large-6.medium-centered.large-centered') + end + + scenario 'Correct display debates and proposals when there are not investments' do + proposal = create(:proposal) + budget_investment = create(:budget_investment) + + visit root_path + + expect(page).to have_selector('.medium-6.large-6') + expect(page).not_to have_selector('.medium-centered.large-centered') + end + + scenario 'Correct display debates, proposals and investments' do + debate = create(:debate) + proposal = create(:proposal) + budget_investment = create(:budget_investment) + + visit root_path + + expect(page).to have_selector('.medium-4.large-4') + expect(page).not_to have_selector('.medium-centered.large-centered') + end + end end end