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