diff --git a/app/views/admin/settings/_configuration_settings_tab.html.erb b/app/views/admin/settings/_configuration_settings_tab.html.erb
index 2018035ec..84f21559b 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.title") %>
-<%= render "settings_table", settings: @configuration_settings, setting_name: "setting" %>
+<%= render "settings_table", settings: @configuration_settings, setting_name: "setting", tab: "#tab-configuration" %>
diff --git a/app/views/admin/settings/_featured_settings_form.html.erb b/app/views/admin/settings/_featured_settings_form.html.erb
index b1ec7ca7a..a0cd450f4 100644
--- a/app/views/admin/settings/_featured_settings_form.html.erb
+++ b/app/views/admin/settings/_featured_settings_form.html.erb
@@ -1,4 +1,5 @@
<%= form_for(feature, url: admin_setting_path(feature), html: { id: "edit_#{dom_id(feature)}"}) do |f| %>
+ <%= f.hidden_field :tab, value: tab if defined?(tab) %>
<%= f.hidden_field :value, id: dom_id(feature), value: (feature.enabled? ? "" : "active") %>
<%= f.submit(t("admin.settings.index.features.#{feature.enabled? ? "disable" : "enable"}"),
class: "button expanded #{feature.enabled? ? "hollow alert" : "success"}",
diff --git a/app/views/admin/settings/_featured_settings_table.html.erb b/app/views/admin/settings/_featured_settings_table.html.erb
index f4ba75823..75dc5938b 100644
--- a/app/views/admin/settings/_featured_settings_table.html.erb
+++ b/app/views/admin/settings/_featured_settings_table.html.erb
@@ -32,7 +32,7 @@
- <%= render "admin/settings/featured_settings_form", feature: feature %>
+ <%= render "admin/settings/featured_settings_form", feature: feature, tab: tab %>
|
<% end %>
diff --git a/app/views/admin/settings/_features_tab.html.erb b/app/views/admin/settings/_features_tab.html.erb
index a8423ac04..52fdae2e9 100644
--- a/app/views/admin/settings/_features_tab.html.erb
+++ b/app/views/admin/settings/_features_tab.html.erb
@@ -1,3 +1,3 @@
<%= t("admin.settings.index.feature_flags") %>
-<%= render "featured_settings_table", features: @feature_settings %>
+<%= render "featured_settings_table", features: @feature_settings, tab: "#tab-feature-flags" %>
diff --git a/app/views/admin/settings/_filter_subnav.html.erb b/app/views/admin/settings/_filter_subnav.html.erb
index 04dc41613..09d2d240b 100644
--- a/app/views/admin/settings/_filter_subnav.html.erb
+++ b/app/views/admin/settings/_filter_subnav.html.erb
@@ -11,7 +11,7 @@
<% end %>
-
+
<%= link_to "#tab-participation-processes" do %>
<%= t("admin.settings.index.participation_processes") %>
<% end %>
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 740f55f23..2b8b6ef89 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 %>
+<%= render "settings_table", 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 aa128575f..fd8110989 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" %>
+ <%= render "settings_table", settings: @map_configuration_settings, setting_name: "setting", tab: "#tab-map-configuration" %>
<%= t("admin.settings.index.map.help") %>
diff --git a/app/views/admin/settings/_participation_processes_tab.html.erb b/app/views/admin/settings/_participation_processes_tab.html.erb
index c554dd7c6..01878c51d 100644
--- a/app/views/admin/settings/_participation_processes_tab.html.erb
+++ b/app/views/admin/settings/_participation_processes_tab.html.erb
@@ -1,3 +1,3 @@
<%= t("admin.settings.index.participation_processes") %>
-<%= render "featured_settings_table", features: @participation_processes_settings %>
+<%= render "featured_settings_table", features: @participation_processes_settings, tab: "#tab-participation-processes" %>
diff --git a/app/views/admin/settings/_proposals_dashboard.html.erb b/app/views/admin/settings/_proposals_dashboard.html.erb
index a33c5eff7..eae3243c4 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" %> %>
+<%= render "settings_table", settings: @proposals_settings, setting_name: "setting", tab: "#tab-proposals" %>
diff --git a/spec/features/admin/settings_spec.rb b/spec/features/admin/settings_spec.rb
index f27b03689..e3c3c43f7 100644
--- a/spec/features/admin/settings_spec.rb
+++ b/spec/features/admin/settings_spec.rb
@@ -163,15 +163,15 @@ describe "Admin settings" do
end
scenario "Should redirect to #tab-remote-census-configuration after update any remote census setting", :js do
- setting_remote_census = create(:setting, key: "remote_census.general.any_remote_census_general_setting")
+ remote_census_setting = create(:setting, key: "remote_census.general.any_remote_census_general_setting")
Setting["feature.remote_census"] = true
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
find("#remote-census-tab").click
- within("#edit_setting_#{setting_remote_census.id}") do
- fill_in "setting_#{setting_remote_census.id}", with: "New value"
+ within("#edit_setting_#{remote_census_setting.id}") do
+ fill_in "setting_#{remote_census_setting.id}", with: "New value"
click_button "Update"
end
@@ -180,21 +180,85 @@ describe "Admin settings" do
Setting["feature.remote_census"] = nil
end
- scenario "Should not redirect to #tab-remote-census-configuration after do not update any remote census setting", :js do
+ scenario "Should redirect to #tab-configuration after update any configuration setting", :js do
+ configuration_setting = Setting.create(key: "whatever")
admin = create(:administrator).user
login_as(admin)
visit admin_settings_path
+ find("#tab-configuration").click
- within("#edit_setting_#{@setting1.id}") do
- fill_in "setting_#{@setting1.id}", with: "New value"
+ within("#edit_setting_#{configuration_setting.id}") do
+ fill_in "setting_#{configuration_setting.id}", with: "New value"
click_button "Update"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-configuration.is-active")
- expect(page).not_to have_css("div#tab-remote-census-configuration.is-active")
end
+ scenario "Should redirect to #tab-map-configuration after update any map configuration setting", :js do
+ map_setting = Setting.create(key: "map.whatever")
+ Setting["feature.map"] = true
+ admin = create(:administrator).user
+ login_as(admin)
+ visit admin_settings_path
+ find("#map-tab").click
+
+ within("#edit_setting_#{map_setting.id}") do
+ fill_in "setting_#{map_setting.id}", with: "New value"
+ click_button "Update"
+ end
+
+ expect(page).to have_current_path(admin_settings_path)
+ expect(page).to have_css("div#tab-map-configuration.is-active")
+ Setting["feature.map"] = nil
+ end
+
+ scenario "Should redirect to #tab-proposals after update any proposal dashboard setting", :js do
+ proposal_dashboard_setting = Setting.create(key: "proposals.whatever")
+ admin = create(:administrator).user
+ login_as(admin)
+ visit admin_settings_path
+ find("#proposals-tab").click
+
+ within("#edit_setting_#{proposal_dashboard_setting.id}") do
+ fill_in "setting_#{proposal_dashboard_setting.id}", with: "New value"
+ click_button "Update"
+ end
+
+ expect(page).to have_current_path(admin_settings_path)
+ expect(page).to have_css("div#tab-proposals.is-active")
+ end
+
+ scenario "Should redirect to #tab-participation-processes after update any participation_processes setting", :js do
+ process_setting = Setting.create(key: "process.whatever")
+ admin = create(:administrator).user
+ login_as(admin)
+ visit admin_settings_path
+ find("#participation-processes-tab").click
+
+ accept_alert do
+ find("#edit_setting_#{process_setting.id} .button").click
+ end
+
+ expect(page).to have_current_path(admin_settings_path)
+ expect(page).to have_css("div#tab-participation-processes.is-active")
+ end
+
+ scenario "Should redirect to #tab-feature-flags after update any feature flag setting", :js do
+ feature_setting = Setting.create(key: "feature.whatever")
+ admin = create(:administrator).user
+ login_as(admin)
+ visit admin_settings_path
+ find("#features-tab").click
+
+ accept_alert do
+ find("#edit_setting_#{feature_setting.id} .button").click
+ end
+
+ expect(page).to have_current_path(admin_settings_path)
+ expect(page).to have_css("div#tab-feature-flags.is-active")
+ end
end
describe "Skip verification" do