From 0273156c2097fbcd5565442109b165be84ed81e3 Mon Sep 17 00:00:00 2001 From: decabeza Date: Sun, 15 Mar 2020 06:51:52 +0100 Subject: [PATCH] Update single heading budget view Co-Authored-By: Julian Herrero --- .../stylesheets/budgets/single_heading.scss | 23 ++++++++++++++ .../budgets/budget_component.html.erb | 6 +++- .../budgets/single_heading_component.html.erb | 4 +++ .../budgets/single_heading_component.rb | 21 +++++++++++++ spec/system/budgets/budgets_spec.rb | 30 +++++++++++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 app/assets/stylesheets/budgets/single_heading.scss create mode 100644 app/components/budgets/single_heading_component.html.erb create mode 100644 app/components/budgets/single_heading_component.rb diff --git a/app/assets/stylesheets/budgets/single_heading.scss b/app/assets/stylesheets/budgets/single_heading.scss new file mode 100644 index 000000000..3bafa20f4 --- /dev/null +++ b/app/assets/stylesheets/budgets/single_heading.scss @@ -0,0 +1,23 @@ +.single-heading { + margin-bottom: $line-height * 2; + padding-bottom: $line-height; + position: relative; + + &::after { + background: $brand; + bottom: 0; + content: ""; + height: rem-calc(6); + position: absolute; + width: 20%; + } + + h2 { + font-size: rem-calc(60); + font-weight: normal; + } + + p { + font-size: rem-calc(48); + } +} diff --git a/app/components/budgets/budget_component.html.erb b/app/components/budgets/budget_component.html.erb index f87ff306c..6b1fd55e2 100644 --- a/app/components/budgets/budget_component.html.erb +++ b/app/components/budgets/budget_component.html.erb @@ -26,7 +26,11 @@
- <%= render Budgets::GroupsAndHeadingsComponent.new(budget) %> + <% if budget.single_heading? %> + <%= render Budgets::SingleHeadingComponent.new(budget) %> + <% else %> + <%= render Budgets::GroupsAndHeadingsComponent.new(budget) %> + <% end %> <% unless budget.informing? %>
diff --git a/app/components/budgets/single_heading_component.html.erb b/app/components/budgets/single_heading_component.html.erb new file mode 100644 index 000000000..05fb1898d --- /dev/null +++ b/app/components/budgets/single_heading_component.html.erb @@ -0,0 +1,4 @@ +
+

<%= title %>

+

<%= price %>

+
diff --git a/app/components/budgets/single_heading_component.rb b/app/components/budgets/single_heading_component.rb new file mode 100644 index 000000000..d9711775a --- /dev/null +++ b/app/components/budgets/single_heading_component.rb @@ -0,0 +1,21 @@ +class Budgets::SingleHeadingComponent < ApplicationComponent + attr_reader :budget + + def initialize(budget) + @budget = budget + end + + private + + def heading + budget.headings.first + end + + def title + heading.name + end + + def price + budget.formatted_heading_price(heading) + end +end diff --git a/spec/system/budgets/budgets_spec.rb b/spec/system/budgets/budgets_spec.rb index 5d9a0c210..1f7cbbddd 100644 --- a/spec/system/budgets/budgets_spec.rb +++ b/spec/system/budgets/budgets_spec.rb @@ -126,6 +126,36 @@ describe "Budgets" do expect(page).to have_content "There are no budgets" end + + scenario "Show heading for budget with single heading" do + group = create(:budget_group, budget: budget, name: "Single group") + create(:budget_heading, group: group, name: "New heading", price: 10_000) + + visit budgets_path + + expect(page).not_to have_content "Single group" + + within ".single-heading" do + expect(page).to have_content "New heading" + expect(page).to have_content "€10,000" + end + end + + scenario "Show group and headings for budget with multiple headings" do + group = create(:budget_group, budget: budget, name: "New group") + create(:budget_heading, group: group, name: "New heading", price: 10_000) + create(:budget_heading, group: group, name: "Other new heading", price: 30_000) + + visit budgets_path + + within("#groups_and_headings") do + expect(page).to have_content "New group" + expect(page).to have_content "New heading" + expect(page).to have_content "€10,000" + expect(page).to have_content "Other new heading" + expect(page).to have_content "€30,000" + end + end end scenario "Index shows only published phases" do