From 00d7299e9eebe529722752b4b0d18bacb4b5a82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 6 Oct 2024 18:04:44 +0200 Subject: [PATCH] Extract component for visible to valuators toggling --- .../budget_investments/row_component.html.erb | 11 +---------- .../admin/budget_investments/row_component.rb | 1 - .../toggle_visible_to_valuators_component.html.erb | 10 ++++++++++ .../toggle_visible_to_valuators_component.rb | 14 ++++++++++++++ .../admin/budget_investments/row_component_spec.rb | 9 --------- .../toggle_visible_to_valuators_component_spec.rb | 9 +++++++++ 6 files changed, 34 insertions(+), 20 deletions(-) create mode 100644 app/components/admin/budget_investments/toggle_visible_to_valuators_component.html.erb create mode 100644 app/components/admin/budget_investments/toggle_visible_to_valuators_component.rb delete mode 100644 spec/components/admin/budget_investments/row_component_spec.rb create mode 100644 spec/components/admin/budget_investments/toggle_visible_to_valuators_component_spec.rb diff --git a/app/components/admin/budget_investments/row_component.html.erb b/app/components/admin/budget_investments/row_component.html.erb index e7360e9eb..3c191a726 100644 --- a/app/components/admin/budget_investments/row_component.html.erb +++ b/app/components/admin/budget_investments/row_component.html.erb @@ -42,16 +42,7 @@ - <% if can?(:admin_update, investment) %> - <%= form_for [:admin, budget, investment], remote: true, format: :json do |f| %> - <%= f.check_box :visible_to_valuators, - label: false, - class: "js-submit-on-change", - id: "budget_investment_visible_to_valuators_#{investment.id}" %> - <% end %> - <% else %> - <%= investment.visible_to_valuators? ? t("shared.yes") : t("shared.no") %> - <% end %> + <%= render Admin::BudgetInvestments::ToggleVisibleToValuatorsComponent.new(investment) %> diff --git a/app/components/admin/budget_investments/row_component.rb b/app/components/admin/budget_investments/row_component.rb index 71a001d9c..c48156735 100644 --- a/app/components/admin/budget_investments/row_component.rb +++ b/app/components/admin/budget_investments/row_component.rb @@ -1,6 +1,5 @@ class Admin::BudgetInvestments::RowComponent < ApplicationComponent attr_reader :investment - use_helpers :can? def initialize(investment) @investment = investment diff --git a/app/components/admin/budget_investments/toggle_visible_to_valuators_component.html.erb b/app/components/admin/budget_investments/toggle_visible_to_valuators_component.html.erb new file mode 100644 index 000000000..fda45a374 --- /dev/null +++ b/app/components/admin/budget_investments/toggle_visible_to_valuators_component.html.erb @@ -0,0 +1,10 @@ +<% if can?(:admin_update, investment) %> + <%= form_for [:admin, budget, investment], remote: true, format: :json do |f| %> + <%= f.check_box :visible_to_valuators, + label: false, + class: "js-submit-on-change", + id: "budget_investment_visible_to_valuators_#{investment.id}" %> + <% end %> +<% else %> + <%= investment.visible_to_valuators? ? t("shared.yes") : t("shared.no") %> +<% end %> diff --git a/app/components/admin/budget_investments/toggle_visible_to_valuators_component.rb b/app/components/admin/budget_investments/toggle_visible_to_valuators_component.rb new file mode 100644 index 000000000..c1cdb0e31 --- /dev/null +++ b/app/components/admin/budget_investments/toggle_visible_to_valuators_component.rb @@ -0,0 +1,14 @@ +class Admin::BudgetInvestments::ToggleVisibleToValuatorsComponent < ApplicationComponent + attr_reader :investment + use_helpers :can? + + def initialize(investment) + @investment = investment + end + + private + + def budget + investment.budget + end +end diff --git a/spec/components/admin/budget_investments/row_component_spec.rb b/spec/components/admin/budget_investments/row_component_spec.rb deleted file mode 100644 index 4f7dfab7c..000000000 --- a/spec/components/admin/budget_investments/row_component_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require "rails_helper" - -describe Admin::BudgetInvestments::RowComponent, :admin do - it "uses a JSON request to update visible to valuators" do - render_inline Admin::BudgetInvestments::RowComponent.new(create(:budget_investment)) - - expect(page).to have_css "form[action$='json'] input[name$='[visible_to_valuators]']" - end -end diff --git a/spec/components/admin/budget_investments/toggle_visible_to_valuators_component_spec.rb b/spec/components/admin/budget_investments/toggle_visible_to_valuators_component_spec.rb new file mode 100644 index 000000000..6bbe4a6d8 --- /dev/null +++ b/spec/components/admin/budget_investments/toggle_visible_to_valuators_component_spec.rb @@ -0,0 +1,9 @@ +require "rails_helper" + +describe Admin::BudgetInvestments::ToggleVisibleToValuatorsComponent, :admin do + it "uses a JSON request to update visible to valuators" do + render_inline Admin::BudgetInvestments::ToggleVisibleToValuatorsComponent.new(create(:budget_investment)) + + expect(page).to have_css "form[action$='json'] input[name$='[visible_to_valuators]']" + end +end