- <%= 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