From c6b23bb6fa88784f7eb60cf733e842e6b73347b8 Mon Sep 17 00:00:00 2001 From: taitus Date: Mon, 26 Jul 2021 10:31:12 +0200 Subject: [PATCH] Render investments list in all budgets types We make this change to unify the index/show budget pages. This way both single and multiple budgets will render the investments list component. --- .../investments_list_component.html.erb | 2 +- .../budgets/investments_list_component.rb | 4 --- .../budgets/supports_info_component.html.erb | 12 +++---- .../investments_list_component_spec.rb | 31 +++++++++++++++++-- .../budgets/supports_info_component_spec.rb | 4 +-- spec/system/budgets/budgets_spec.rb | 4 +-- 6 files changed, 38 insertions(+), 19 deletions(-) diff --git a/app/components/budgets/investments_list_component.html.erb b/app/components/budgets/investments_list_component.html.erb index 622f175dc..04042e634 100644 --- a/app/components/budgets/investments_list_component.html.erb +++ b/app/components/budgets/investments_list_component.html.erb @@ -10,7 +10,7 @@ <% end %> -<% unless budget.informing? %> +<% if budget.single_heading? && !budget.informing? || investments.any? %>
<%= link_to t("budgets.investments_list.see_all"), diff --git a/app/components/budgets/investments_list_component.rb b/app/components/budgets/investments_list_component.rb index ab2a6b80d..9803c4ee2 100644 --- a/app/components/budgets/investments_list_component.rb +++ b/app/components/budgets/investments_list_component.rb @@ -5,10 +5,6 @@ class Budgets::InvestmentsListComponent < ApplicationComponent @budget = budget end - def render? - budget.single_heading? - end - def investments(limit: 9) case budget.phase when "accepting", "reviewing" diff --git a/app/components/budgets/supports_info_component.html.erb b/app/components/budgets/supports_info_component.html.erb index 19fff395f..7980b7eb9 100644 --- a/app/components/budgets/supports_info_component.html.erb +++ b/app/components/budgets/supports_info_component.html.erb @@ -18,12 +18,10 @@

<%= t("budgets.supports_info.share") %>

- <% if budget.single_heading? %> -

- - <%= t("budgets.supports_info.scrolling") %>
-
-

- <% end %> +

+ + <%= t("budgets.supports_info.scrolling") %>
+
+

diff --git a/spec/components/budgets/investments_list_component_spec.rb b/spec/components/budgets/investments_list_component_spec.rb index 60717acd8..35b91bcef 100644 --- a/spec/components/budgets/investments_list_component_spec.rb +++ b/spec/components/budgets/investments_list_component_spec.rb @@ -115,15 +115,15 @@ describe Budgets::InvestmentsListComponent, type: :component do end end - it "is not rendered for budgets with multiple headings" do + it "is rendered for budgets with multiple headings" do create(:budget_heading, budget: budget) - Budget::Phase::PHASE_KINDS.each do |phase_name| + (Budget::Phase::PHASE_KINDS - %w[informing finished]).each do |phase_name| budget.phase = phase_name render_inline Budgets::InvestmentsListComponent.new(budget) - expect(page.native.inner_html).to be_empty + expect(page).to have_content "List of investments" end end end @@ -149,5 +149,30 @@ describe Budgets::InvestmentsListComponent, type: :component do href: budget_investments_path(budget) end end + + context "budget with multiple headings" do + before { create(:budget_heading, budget: budget) } + + it "is not shown in the informing or finished phases" do + %w[informing finished].each do |phase_name| + budget.phase = phase_name + + render_inline Budgets::InvestmentsListComponent.new(budget) + + expect(page).not_to have_link "See all investments" + end + end + + it "is shown in all other phases" do + (Budget::Phase::PHASE_KINDS - %w[informing finished]).each do |phase_name| + budget.phase = phase_name + + render_inline Budgets::InvestmentsListComponent.new(budget) + + expect(page).to have_link "See all investments", + href: budget_investments_path(budget) + end + end + end end end diff --git a/spec/components/budgets/supports_info_component_spec.rb b/spec/components/budgets/supports_info_component_spec.rb index e4e07a545..37afa9644 100644 --- a/spec/components/budgets/supports_info_component_spec.rb +++ b/spec/components/budgets/supports_info_component_spec.rb @@ -16,12 +16,12 @@ describe Budgets::SupportsInfoComponent, type: :component do expect(page).to have_link "Keep scrolling to see all ideas" end - it "when budget has multiple headings the link to see all ideas is not rendered" do + it "renders the link to see all ideas when there are multiple headings" do create_list(:budget_heading, 2, group: group) render_inline component - expect(page).not_to have_link "Keep scrolling to see all ideas" + expect(page).to have_link "Keep scrolling to see all ideas" end it "does not render anything when the budget is not selecting" do diff --git a/spec/system/budgets/budgets_spec.rb b/spec/system/budgets/budgets_spec.rb index 8d393f668..6848923a9 100644 --- a/spec/system/budgets/budgets_spec.rb +++ b/spec/system/budgets/budgets_spec.rb @@ -319,7 +319,7 @@ describe "Budgets" do href: budget_investments_path(budget) end - scenario "Do not show investments list when budget has multiple headings" do + scenario "Show investments list when budget has multiple headings" do budget = create(:budget, phase: "accepting") group = create(:budget_group, budget: budget) heading_1 = create(:budget_heading, group: group) @@ -329,7 +329,7 @@ describe "Budgets" do visit budget_path(budget) - expect(page).not_to have_css ".investments-list" + expect(page).to have_css ".investments-list" end scenario "Show supports info on selecting phase" do