From 57c257e91c5b397975f63a02a1adc02b4c263a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= <15726+Senen@users.noreply.github.com> Date: Tue, 21 Nov 2023 14:00:35 +0100 Subject: [PATCH] Extract settings table partial to a component --- .../admin/settings/table_component.html.erb} | 0 .../admin/settings/table_component.rb | 18 ++++++++++++ app/helpers/settings_helper.rb | 8 ------ .../_configuration_settings_tab.html.erb | 2 +- .../_images_and_documents_tab.html.erb | 2 +- .../settings/_map_configuration_tab.html.erb | 2 +- .../settings/_proposals_dashboard.html.erb | 2 +- .../_remote_census_configuration_tab.html.erb | 6 ++-- .../admin/settings/table_component_spec.rb | 28 +++++++++++++++++++ spec/helpers/settings_helper_spec.rb | 9 ------ 10 files changed, 53 insertions(+), 24 deletions(-) rename app/{views/admin/settings/_settings_table.html.erb => components/admin/settings/table_component.html.erb} (100%) create mode 100644 app/components/admin/settings/table_component.rb create mode 100644 spec/components/admin/settings/table_component_spec.rb diff --git a/app/views/admin/settings/_settings_table.html.erb b/app/components/admin/settings/table_component.html.erb similarity index 100% rename from app/views/admin/settings/_settings_table.html.erb rename to app/components/admin/settings/table_component.html.erb diff --git a/app/components/admin/settings/table_component.rb b/app/components/admin/settings/table_component.rb new file mode 100644 index 000000000..23f7997d3 --- /dev/null +++ b/app/components/admin/settings/table_component.rb @@ -0,0 +1,18 @@ +class Admin::Settings::TableComponent < ApplicationComponent + attr_reader :settings, :setting_name, :tab + delegate :dom_id, to: :helpers + + def initialize(settings:, setting_name:, tab: nil) + @settings = settings + @setting_name = setting_name + @tab = tab + end + + def display_setting_name(setting_name) + if setting_name == "setting" + t("admin.settings.setting_name") + else + t("admin.settings.#{setting_name}") + end + end +end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index a37d9299e..ccd248e63 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -15,12 +15,4 @@ module SettingsHelper def setting @all_settings ||= Setting.all.to_h { |s| [s.key, s.value.presence] } end - - def display_setting_name(setting_name) - if setting_name == "setting" - t("admin.settings.setting_name") - else - t("admin.settings.#{setting_name}") - end - end end diff --git a/app/views/admin/settings/_configuration_settings_tab.html.erb b/app/views/admin/settings/_configuration_settings_tab.html.erb index b33fa9371..228709f2e 100644 --- a/app/views/admin/settings/_configuration_settings_tab.html.erb +++ b/app/views/admin/settings/_configuration_settings_tab.html.erb @@ -1,3 +1,3 @@

<%= t("admin.settings.index.general") %>

-<%= render "settings_table", settings: @configuration_settings, setting_name: "setting", tab: "#tab-configuration" %> +<%= render Admin::Settings::TableComponent.new(settings: @configuration_settings, setting_name: "setting", tab: "#tab-configuration") %> diff --git a/app/views/admin/settings/_images_and_documents_tab.html.erb b/app/views/admin/settings/_images_and_documents_tab.html.erb index 2b8b6ef89..adbf4159a 100644 --- a/app/views/admin/settings/_images_and_documents_tab.html.erb +++ b/app/views/admin/settings/_images_and_documents_tab.html.erb @@ -1,3 +1,3 @@

<%= t("admin.settings.index.images_and_documents") %>

-<%= render "settings_table", settings: @uploads_settings, setting_name: "setting" %> +<%= render Admin::Settings::TableComponent.new(settings: @uploads_settings, setting_name: "setting") %> diff --git a/app/views/admin/settings/_map_configuration_tab.html.erb b/app/views/admin/settings/_map_configuration_tab.html.erb index fd8110989..e4b324e5d 100644 --- a/app/views/admin/settings/_map_configuration_tab.html.erb +++ b/app/views/admin/settings/_map_configuration_tab.html.erb @@ -1,7 +1,7 @@ <% if feature?(:map) %>

<%= t("admin.settings.index.map.title") %>

- <%= render "settings_table", settings: @map_configuration_settings, setting_name: "setting", tab: "#tab-map-configuration" %> + <%= render Admin::Settings::TableComponent.new(settings: @map_configuration_settings, setting_name: "setting", tab: "#tab-map-configuration") %>

<%= t("admin.settings.index.map.help") %>

diff --git a/app/views/admin/settings/_proposals_dashboard.html.erb b/app/views/admin/settings/_proposals_dashboard.html.erb index eae3243c4..ebdca806c 100644 --- a/app/views/admin/settings/_proposals_dashboard.html.erb +++ b/app/views/admin/settings/_proposals_dashboard.html.erb @@ -1,3 +1,3 @@

<%= t("admin.settings.index.dashboard.title") %>

-<%= render "settings_table", settings: @proposals_settings, setting_name: "setting", tab: "#tab-proposals" %> +<%= render Admin::Settings::TableComponent.new(settings: @proposals_settings, setting_name: "setting", tab: "#tab-proposals") %> diff --git a/app/views/admin/settings/_remote_census_configuration_tab.html.erb b/app/views/admin/settings/_remote_census_configuration_tab.html.erb index 6a136bd42..cdfba13d2 100644 --- a/app/views/admin/settings/_remote_census_configuration_tab.html.erb +++ b/app/views/admin/settings/_remote_census_configuration_tab.html.erb @@ -1,9 +1,9 @@ <% if feature?(:remote_census) %>

<%= t("admin.settings.index.remote_census.title") %>

- <%= render "settings_table", settings: @remote_census_general_settings, setting_name: "remote_census_general_name", tab: "#tab-remote-census-configuration" %> - <%= render "settings_table", settings: @remote_census_request_settings, setting_name: "remote_census_request_name", tab: "#tab-remote-census-configuration" %> - <%= render "settings_table", settings: @remote_census_response_settings, setting_name: "remote_census_response_name", tab: "#tab-remote-census-configuration" %> + <%= render Admin::Settings::TableComponent.new(settings: @remote_census_general_settings, setting_name: "remote_census_general_name", tab: "#tab-remote-census-configuration") %> + <%= render Admin::Settings::TableComponent.new(settings: @remote_census_request_settings, setting_name: "remote_census_request_name", tab: "#tab-remote-census-configuration") %> + <%= render Admin::Settings::TableComponent.new(settings: @remote_census_response_settings, setting_name: "remote_census_response_name", tab: "#tab-remote-census-configuration") %> <% else %>
<%= t("admin.settings.index.remote_census.how_to_enable") %> diff --git a/spec/components/admin/settings/table_component_spec.rb b/spec/components/admin/settings/table_component_spec.rb new file mode 100644 index 000000000..f30ed2416 --- /dev/null +++ b/spec/components/admin/settings/table_component_spec.rb @@ -0,0 +1,28 @@ +require "rails_helper" + +describe Admin::Settings::TableComponent do + describe "#display_setting_name" do + it "returns correct table header" do + settings = Setting.limit(2) + + render_inline Admin::Settings::TableComponent.new settings: settings, setting_name: "setting" + + expect(page).to have_content("Setting") + + setting_name = "remote_census_general_name" + render_inline Admin::Settings::TableComponent.new settings: settings, setting_name: setting_name + + expect(page).to have_content("General Information") + + setting_name = "remote_census_request_name" + render_inline Admin::Settings::TableComponent.new settings: settings, setting_name: setting_name + + expect(page).to have_content("Request Data") + + setting_name = "remote_census_response_name" + render_inline Admin::Settings::TableComponent.new settings: settings, setting_name: setting_name + + expect(page).to have_content("Response Data") + end + end +end diff --git a/spec/helpers/settings_helper_spec.rb b/spec/helpers/settings_helper_spec.rb index f07a97f10..f7bd9835a 100644 --- a/spec/helpers/settings_helper_spec.rb +++ b/spec/helpers/settings_helper_spec.rb @@ -24,13 +24,4 @@ RSpec.describe SettingsHelper do expect(feature?("f4")).to be nil end end - - describe "#display_setting_name" do - it "returns correct setting_name" do - expect(display_setting_name("setting")).to eq("Setting") - expect(display_setting_name("remote_census_general_name")).to eq("General Information") - expect(display_setting_name("remote_census_request_name")).to eq("Request Data") - expect(display_setting_name("remote_census_response_name")).to eq("Response Data") - end - end end