From a95aa1b3e912b0dac0ecabdcfb48109c1ba45cbd Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 7 Aug 2024 09:34:15 +1000 Subject: [PATCH] Submit blank value if nothing selected If a checkbox is not selected, the browser does not submit it at all. --- .../admin/connected_app_settings_controller.rb | 2 +- app/views/admin/connected_app_settings/edit.html.haml | 3 +++ .../admin/configuration/connected_app_settings_spec.rb | 10 ++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/connected_app_settings_controller.rb b/app/controllers/admin/connected_app_settings_controller.rb index 3b9cc0585b..214ddaba49 100644 --- a/app/controllers/admin/connected_app_settings_controller.rb +++ b/app/controllers/admin/connected_app_settings_controller.rb @@ -15,7 +15,7 @@ module Admin private def connected_apps_enabled - params.require(:preferences).require(:connected_apps_enabled).join(",") + params.require(:preferences).require(:connected_apps_enabled).compact_blank.join(",") end end end diff --git a/app/views/admin/connected_app_settings/edit.html.haml b/app/views/admin/connected_app_settings/edit.html.haml index cdadebd9f0..cae8f316c0 100644 --- a/app/views/admin/connected_app_settings/edit.html.haml +++ b/app/views/admin/connected_app_settings/edit.html.haml @@ -11,6 +11,9 @@ = t('.info_html') .field + -# Blank value in case nothing is selected + = hidden_field_tag("preferences[connected_apps_enabled][]", "") + - ConnectedApp::TYPES.each do |type| %label = check_box_tag("preferences[connected_apps_enabled][]", type, diff --git a/spec/system/admin/configuration/connected_app_settings_spec.rb b/spec/system/admin/configuration/connected_app_settings_spec.rb index 6d413d3473..73b38360d9 100644 --- a/spec/system/admin/configuration/connected_app_settings_spec.rb +++ b/spec/system/admin/configuration/connected_app_settings_spec.rb @@ -22,5 +22,15 @@ RSpec.describe "Connected App Settings", feature: :connected_apps do expect{ click_button "Update" }.to change{ Spree::Config.connected_apps_enabled }.to("discover_regen,affiliate_sales_data") + + expect(page).to have_field "Discover Regenerative portal", checked: true + expect(page).to have_field "DFC anonymised orders API for research purposes", checked: true + + uncheck "Discover Regenerative portal" + uncheck "DFC anonymised orders API for research purposes" + + expect{ + click_button "Update" + }.to change{ Spree::Config.connected_apps_enabled }.to("") end end