From 71af3e8789a9389502b5bcbcc89cb9f3a6af7c36 Mon Sep 17 00:00:00 2001 From: taitus Date: Wed, 10 Apr 2019 15:03:45 +0200 Subject: [PATCH] Add :tab param to others calls to _setting_table partial Allow redirect to their tab after update a Setting --- .../_configuration_settings_tab.html.erb | 2 +- .../settings/_featured_settings_form.html.erb | 1 + .../_featured_settings_table.html.erb | 2 +- .../admin/settings/_features_tab.html.erb | 2 +- .../admin/settings/_filter_subnav.html.erb | 2 +- .../_images_and_documents_tab.html.erb | 2 +- .../settings/_map_configuration_tab.html.erb | 2 +- .../_participation_processes_tab.html.erb | 2 +- .../settings/_proposals_dashboard.html.erb | 2 +- spec/features/admin/settings_spec.rb | 78 +++++++++++++++++-- 10 files changed, 80 insertions(+), 15 deletions(-) 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