Extract settings table partial to a component

This commit is contained in:
Senén Rodero Rodríguez
2023-11-21 14:00:35 +01:00
committed by Javi Martín
parent 8a3bd04a9a
commit 57c257e91c
10 changed files with 53 additions and 24 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -1,3 +1,3 @@
<h2><%= t("admin.settings.index.general") %></h2>
<%= 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") %>

View File

@@ -1,3 +1,3 @@
<h2><%= t("admin.settings.index.images_and_documents") %></h2>
<%= render "settings_table", settings: @uploads_settings, setting_name: "setting" %>
<%= render Admin::Settings::TableComponent.new(settings: @uploads_settings, setting_name: "setting") %>

View File

@@ -1,7 +1,7 @@
<% if feature?(:map) %>
<h2><%= t("admin.settings.index.map.title") %></h2>
<%= 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") %>
<p><%= t("admin.settings.index.map.help") %></p>

View File

@@ -1,3 +1,3 @@
<h2><%= t("admin.settings.index.dashboard.title") %></h2>
<%= 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") %>

View File

@@ -1,9 +1,9 @@
<% if feature?(:remote_census) %>
<h2><%= t("admin.settings.index.remote_census.title") %></h2>
<%= 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 %>
<div class="callout primary">
<%= t("admin.settings.index.remote_census.how_to_enable") %>

View File

@@ -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

View File

@@ -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