diff --git a/app/components/budgets/budget_component.html.erb b/app/components/budgets/budget_component.html.erb
index 232d5da75..d0855c9db 100644
--- a/app/components/budgets/budget_component.html.erb
+++ b/app/components/budgets/budget_component.html.erb
@@ -33,13 +33,7 @@
<% end %>
<%= render Budgets::SupportsInfoComponent.new(budget) %>
-
- <% unless budget.informing? %>
-
-
<%= t("budgets.index.map") %>
- <%= render_map(nil, "budgets", false, nil, coordinates) %>
-
- <% end %>
+ <%= render Budgets::MapComponent.new(budget) %>
diff --git a/app/components/budgets/budget_component.rb b/app/components/budgets/budget_component.rb
index 83536cfd6..e7ed09c47 100644
--- a/app/components/budgets/budget_component.rb
+++ b/app/components/budgets/budget_component.rb
@@ -1,22 +1,8 @@
class Budgets::BudgetComponent < ApplicationComponent
- delegate :wysiwyg, :auto_link_already_sanitized_html, :render_map, to: :helpers
+ delegate :wysiwyg, :auto_link_already_sanitized_html, to: :helpers
attr_reader :budget
def initialize(budget)
@budget = budget
end
-
- private
-
- def coordinates
- return unless budget.present?
-
- if budget.publishing_prices_or_later? && budget.investments.selected.any?
- investments = budget.investments.selected
- else
- investments = budget.investments
- end
-
- MapLocation.where(investment_id: investments).map(&:json_data)
- end
end
diff --git a/app/components/budgets/map_component.html.erb b/app/components/budgets/map_component.html.erb
new file mode 100644
index 000000000..733ce56af
--- /dev/null
+++ b/app/components/budgets/map_component.html.erb
@@ -0,0 +1,4 @@
+
+
<%= t("budgets.index.map") %>
+ <%= render_map(nil, "budgets", false, nil, coordinates) %>
+
diff --git a/app/components/budgets/map_component.rb b/app/components/budgets/map_component.rb
new file mode 100644
index 000000000..be83fcce4
--- /dev/null
+++ b/app/components/budgets/map_component.rb
@@ -0,0 +1,26 @@
+class Budgets::MapComponent < ApplicationComponent
+ delegate :render_map, to: :helpers
+ attr_reader :budget
+
+ def initialize(budget)
+ @budget = budget
+ end
+
+ def render?
+ !budget.informing?
+ end
+
+ private
+
+ def coordinates
+ return unless budget.present?
+
+ if budget.publishing_prices_or_later? && budget.investments.selected.any?
+ investments = budget.investments.selected
+ else
+ investments = budget.investments
+ end
+
+ MapLocation.where(investment_id: investments).map(&:json_data)
+ end
+end
diff --git a/spec/components/budgets/map_component_spec.rb b/spec/components/budgets/map_component_spec.rb
new file mode 100644
index 000000000..662507bb1
--- /dev/null
+++ b/spec/components/budgets/map_component_spec.rb
@@ -0,0 +1,23 @@
+require "rails_helper"
+
+describe Budgets::MapComponent do
+ let(:budget) { build(:budget) }
+
+ describe "#render?" do
+ it "is rendered after the informing phase" do
+ budget.phase = "accepting"
+
+ render_inline Budgets::MapComponent.new(budget)
+
+ expect(page.first("div.map")).to have_content "located geographically"
+ end
+
+ it "is not rendered during the informing phase" do
+ budget.phase = "informing"
+
+ render_inline Budgets::MapComponent.new(budget)
+
+ expect(page).not_to be_rendered
+ end
+ end
+end
diff --git a/spec/system/budgets/budgets_spec.rb b/spec/system/budgets/budgets_spec.rb
index b0a8ce7f9..0ba94c64c 100644
--- a/spec/system/budgets/budgets_spec.rb
+++ b/spec/system/budgets/budgets_spec.rb
@@ -100,8 +100,6 @@ describe "Budgets" do
expect(page).not_to have_link("List of all investment projects")
expect(page).not_to have_link("List of all unfeasible investment projects")
expect(page).not_to have_link("List of all investment projects not selected for balloting")
-
- expect(page).not_to have_css("div.map")
end
end
@@ -114,8 +112,6 @@ describe "Budgets" do
within("#budget_info") do
expect(page).not_to have_link heading.name
expect(page).to have_content "#{heading.name}\n€1,000,000"
-
- expect(page).to have_css("div.map")
end
end
@@ -342,7 +338,7 @@ describe "Budgets" do
}
end
- allow_any_instance_of(Budgets::BudgetComponent).to receive(:coordinates).and_return(coordinates)
+ allow_any_instance_of(Budgets::MapComponent).to receive(:coordinates).and_return(coordinates)
visit budgets_path