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") %>
- <%= render "recommended_carousel", recommendeds: recommended_debates,
- key: "debates",
- image_field: nil,
- image_version: nil,
- image_default: "https://dummyimage.com/600x400/000/fff",
- klass: "large-offset-1" %>
+ <% centered_and_size_class = calculate_centered_and_size_class(recommended_debates, recommended_proposals, recommended_budget_investments) %>
+ <% if recommended_debates.any? %>
+ <%= render "recommended_carousel", recommendeds: recommended_debates,
+ key: "debates",
+ image_field: nil,
+ image_version: nil,
+ image_default: "https://dummyimage.com/600x400/000/fff",
+ dynamic_display: centered_and_size_class %>
+ <% end %>
- <%= render "recommended_carousel", recommendeds: recommended_proposals,
- key: "proposals",
- image_field: nil,
- image_version: nil,
- image_default: "https://dummyimage.com/600x400/000/fff",
- klass: "" %>
+ <% if recommended_proposals.any? %>
+ <%= render "recommended_carousel", recommendeds: recommended_proposals,
+ key: "proposals",
+ image_field: nil,
+ image_version: nil,
+ image_default: "https://dummyimage.com/600x400/000/fff",
+ dynamic_display: centered_and_size_class %>
+ <% end %>
- <%= render "recommended_carousel", recommendeds: recommended_budget_investments,
- key: "budget-investments",
- image_field: nil, #example value :image (PR#1691)
- image_version: nil, #example value :thumb (PR#1691)
- image_default: "https://dummyimage.com/600x400/000/fff",
- klass: "end" %>
+ <% if recommended_budget_investments.any? %>
+ <%= render "recommended_carousel", recommendeds: recommended_budget_investments,
+ key: "budget-investments",
+ image_field: nil, #example value :image (PR#1691)
+ image_version: nil, #example value :thumb (PR#1691)
+ image_default: "https://dummyimage.com/600x400/000/fff",
+ dynamic_display: centered_and_size_class %>
+ <% end %>
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