From 676adfcb3fe32822035b7f5a4aaa63a765cff038 Mon Sep 17 00:00:00 2001 From: taitus Date: Wed, 11 Nov 2020 19:44:06 +0100 Subject: [PATCH 1/4] Add new SDG feature Setting --- app/models/setting.rb | 1 + config/locales/en/settings.yml | 2 ++ config/locales/es/settings.yml | 2 ++ 3 files changed, 5 insertions(+) diff --git a/app/models/setting.rb b/app/models/setting.rb index 88733de4e..4141a7a16 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -100,6 +100,7 @@ class Setting < ApplicationRecord "feature.remote_census": nil, "feature.valuation_comment_notification": true, "feature.graphql_api": true, + "feature.sdg": false, "homepage.widgets.feeds.debates": true, "homepage.widgets.feeds.processes": true, "homepage.widgets.feeds.proposals": true, diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml index 804215d6d..93abbf80b 100644 --- a/config/locales/en/settings.yml +++ b/config/locales/en/settings.yml @@ -130,6 +130,8 @@ en: dashboard: notification_emails: "Dashboard notification emails" notification_emails_description: "Enable sending dashboard notification emails to proposal's authors" + sdg: SDG + sdg_description: Enable Sustainable Development Goals sections in the administration menu and in the Global Settings. remote_census: general: endpoint: "Endpoint" diff --git a/config/locales/es/settings.yml b/config/locales/es/settings.yml index e4cf5d532..ccb89f3bc 100644 --- a/config/locales/es/settings.yml +++ b/config/locales/es/settings.yml @@ -130,6 +130,8 @@ es: dashboard: notification_emails: "Emails del panel de progreso" notification_emails_description: "Activar el envío de emails de notificaciones a los autores de las propuestas en la sección de panel de progreso" + sdg: ODS + sdg_description: Habilitar secciones relacionadas con Objetivos de Desarrollo Sostenible en el menú de administración y en la sección de Configuración Global. remote_census: general: endpoint: "Endpoint" From 72e64bd54325af86a3582e661e6e7a56f7c6284c Mon Sep 17 00:00:00 2001 From: taitus Date: Wed, 11 Nov 2020 19:45:37 +0100 Subject: [PATCH 2/4] Render 'how to enable' when the related feature setting is disabled Add 'how to enable' information on SDG configuration tab when related sdg feature setting is disabled. --- .../settings/_sdg_configuration_tab.html.erb | 10 ++++++-- config/locales/en/admin.yml | 1 + config/locales/es/admin.yml | 1 + spec/system/admin/settings_spec.rb | 25 +++++++++++++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/views/admin/settings/_sdg_configuration_tab.html.erb b/app/views/admin/settings/_sdg_configuration_tab.html.erb index 0477ed7ef..e931b67e1 100644 --- a/app/views/admin/settings/_sdg_configuration_tab.html.erb +++ b/app/views/admin/settings/_sdg_configuration_tab.html.erb @@ -1,3 +1,9 @@ -

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

+<% if feature?(:sdg) %> +

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

-<%= render "featured_settings_table", features: @sdg_settings, tab: "#tab-sdg-configuration" %> + <%= render "featured_settings_table", features: @sdg_settings, tab: "#tab-sdg-configuration" %> +<% else %> +
+ <%= t("admin.settings.index.sdg.how_to_enable") %> +
+<% end %> diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index b26d43e85..cf330ae41 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -1242,6 +1242,7 @@ en: how_to_enable: 'To configure remote census (SOAP) you must enable "Configure connection to remote census (SOAP)" on "Features" tab.' sdg: title: SDG configuration + how_to_enable: 'To show the configuration options from Sustainable Development Goals you must enable "SDG" on "Features" tab.' remote_census_general_name: General Information remote_census_request_name: Request Data remote_census_response_name: Response Data diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 644139a29..18c87db4b 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -1241,6 +1241,7 @@ es: how_to_enable: 'Para configurar la conexión con el Censo Remoto (SOAP) se debe activar "Configurar la conexión al censo remoto (SOAP)" en la pestaña "Funcionalidades".' sdg: title: Configuración ODS + how_to_enable: 'Para mostrar las opciones de configuración de los Objetivos de Desarrollo Sostenible se debe activar "ODS" en la pestaña "Funcionalidades".' remote_census_general_name: Datos Generales remote_census_request_name: Datos Petición remote_census_response_name: Datos Respuesta diff --git a/spec/system/admin/settings_spec.rb b/spec/system/admin/settings_spec.rb index f51dc86a2..558bf41d0 100644 --- a/spec/system/admin/settings_spec.rb +++ b/spec/system/admin/settings_spec.rb @@ -267,6 +267,7 @@ describe "Admin settings", :admin do end scenario "On #tab-sdg-configuration", :js do + Setting["feature.sdg"] = true Setting.create!(key: "sdg.whatever") login_as(create(:administrator).user) @@ -313,4 +314,28 @@ describe "Admin settings", :admin do Setting["feature.user.skip_verification"] = nil end end + + describe "SDG configuration tab", :js do + scenario "is enabled when the sdg feature is enabled" do + Setting["feature.sdg"] = true + login_as(create(:administrator).user) + + visit admin_settings_path + click_link "SDG configuration" + + expect(page).to have_css "h2", exact_text: "SDG configuration" + end + + scenario "is disabled when the sdg feature is disabled" do + Setting["feature.sdg"] = false + login_as(create(:administrator).user) + + visit admin_settings_path + click_link "SDG configuration" + + expect(page).to have_content "To show the configuration options from " \ + "Sustainable Development Goals you must " \ + 'enable "SDG" on "Features" tab.' + end + end end From cb6318583742a5f2f331146b640b08b051700cf1 Mon Sep 17 00:00:00 2001 From: taitus Date: Wed, 11 Nov 2020 19:46:06 +0100 Subject: [PATCH 3/4] Render SDG content sidebar when sdg feature setting is enabled --- .../sdg_management/base_controller.rb | 3 ++ app/views/shared/_admin_login_items.html.erb | 2 +- spec/system/sdg_management/goals_spec.rb | 2 ++ spec/system/sdg_management/sdg_spec.rb | 31 +++++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 spec/system/sdg_management/sdg_spec.rb diff --git a/app/controllers/sdg_management/base_controller.rb b/app/controllers/sdg_management/base_controller.rb index a5028f7d0..4fcfb39be 100644 --- a/app/controllers/sdg_management/base_controller.rb +++ b/app/controllers/sdg_management/base_controller.rb @@ -1,4 +1,7 @@ class SDGManagement::BaseController < ApplicationController + include FeatureFlags + feature_flag :sdg + layout "admin" before_action :authenticate_user! diff --git a/app/views/shared/_admin_login_items.html.erb b/app/views/shared/_admin_login_items.html.erb index 32c70fe73..5c764ebf5 100644 --- a/app/views/shared/_admin_login_items.html.erb +++ b/app/views/shared/_admin_login_items.html.erb @@ -33,7 +33,7 @@ <% end %> - <% if current_user.administrator? %> + <% if feature?(:sdg) && current_user.administrator? %>
  • <%= link_to t("sdg_management.header.title"), sdg_management_root_path %>
  • diff --git a/spec/system/sdg_management/goals_spec.rb b/spec/system/sdg_management/goals_spec.rb index 6ceca8107..77d508853 100644 --- a/spec/system/sdg_management/goals_spec.rb +++ b/spec/system/sdg_management/goals_spec.rb @@ -5,6 +5,8 @@ describe "Goals", :js do describe "Index" do scenario "Visit the index" do + Setting["feature.sdg"] = true + visit sdg_management_root_path within("#side_menu") do diff --git a/spec/system/sdg_management/sdg_spec.rb b/spec/system/sdg_management/sdg_spec.rb new file mode 100644 index 000000000..6f5dd5d37 --- /dev/null +++ b/spec/system/sdg_management/sdg_spec.rb @@ -0,0 +1,31 @@ +require "rails_helper" + +describe "SDG Management" do + before { login_as(create(:administrator).user) } + + context "SDG feature flag is enabled", :js do + before { Setting["feature.sdg"] = true } + + scenario "shows the SDG content link" do + visit root_path + click_link "Menu" + + expect(page).to have_link "SDG content" + end + end + + context "SDG feature is disabled" do + before { Setting["feature.sdg"] = false } + + scenario "does not show the SDG Content link", :js do + visit root_path + click_link "Menu" + + expect(page).not_to have_link "SDG content" + end + + scenario "does not allow visits to the SDG content" do + expect { visit sdg_management_root_path }.to raise_exception(FeatureFlags::FeatureDisabled) + end + end +end From 64a8ceaa9bbf2fea37ce4e699561c0b2e036746a Mon Sep 17 00:00:00 2001 From: taitus Date: Wed, 11 Nov 2020 19:46:38 +0100 Subject: [PATCH 4/4] Enable sdg feature settings by default on dev_seeds --- db/dev_seeds/settings.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/dev_seeds/settings.rb b/db/dev_seeds/settings.rb index 021820db0..6fe975ea8 100644 --- a/db/dev_seeds/settings.rb +++ b/db/dev_seeds/settings.rb @@ -5,6 +5,7 @@ section "Creating Settings" do "facebook_handle": "CONSUL", "feature.featured_proposals": "true", "feature.map": "true", + "feature.sdg": "true", "instagram_handle": "CONSUL", "mailer_from_address": "noreply@consul.dev", "mailer_from_name": "CONSUL",