From 38cc8a89d1289157223d75e524e10b09999cd086 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 25 Apr 2023 17:20:57 +0200 Subject: [PATCH 1/3] Add `hide_groups_tab` to Enterprise model --- .../20230425135232_add_hide_groups_tab_to_enterprises.rb | 5 +++++ db/schema.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20230425135232_add_hide_groups_tab_to_enterprises.rb diff --git a/db/migrate/20230425135232_add_hide_groups_tab_to_enterprises.rb b/db/migrate/20230425135232_add_hide_groups_tab_to_enterprises.rb new file mode 100644 index 0000000000..8efec710fb --- /dev/null +++ b/db/migrate/20230425135232_add_hide_groups_tab_to_enterprises.rb @@ -0,0 +1,5 @@ +class AddHideGroupsTabToEnterprises < ActiveRecord::Migration[7.0] + def change + add_column :enterprises, :hide_groups_tab, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 7aa41d0e3c..7af643b003 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_04_24_141213) do +ActiveRecord::Schema[7.0].define(version: 2023_04_25_135232) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -226,6 +226,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_24_141213) do t.string "whatsapp_phone", limit: 255 t.boolean "hide_ofn_navigation", default: false, null: false t.text "white_label_logo_link" + t.boolean "hide_groups_tab", default: false t.index ["address_id"], name: "index_enterprises_on_address_id" t.index ["is_primary_producer", "sells"], name: "index_enterprises_on_is_primary_producer_and_sells" t.index ["name"], name: "index_enterprises_on_name", unique: true From 0d98ec8f4c711b5c427c048f3a829ae55b1d238e Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 25 Apr 2023 17:22:14 +0200 Subject: [PATCH 2/3] In admin, add form to set `hide_groups_tab` attribute + add specs --- .../permitted_attributes/enterprise.rb | 3 ++- .../enterprises/form/_white_label.html.haml | 8 ++++++++ config/locales/en.yml | 1 + spec/system/admin/enterprises_spec.rb | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/services/permitted_attributes/enterprise.rb b/app/services/permitted_attributes/enterprise.rb index 2948fe4f3e..b6edf81636 100644 --- a/app/services/permitted_attributes/enterprise.rb +++ b/app/services/permitted_attributes/enterprise.rb @@ -35,7 +35,8 @@ module PermittedAttributes :show_customer_names_to_suppliers, :preferred_shopfront_product_sorting_method, :preferred_invoice_order_by_supplier, :preferred_product_low_stock_display, - :hide_ofn_navigation, :white_label_logo, :white_label_logo_link + :hide_ofn_navigation, :white_label_logo, :white_label_logo_link, + :hide_groups_tab ] end end diff --git a/app/views/admin/enterprises/form/_white_label.html.haml b/app/views/admin/enterprises/form/_white_label.html.haml index 963d26a25e..091f62213c 100644 --- a/app/views/admin/enterprises/form/_white_label.html.haml +++ b/app/views/admin/enterprises/form/_white_label.html.haml @@ -29,3 +29,11 @@ = render ConfirmModalComponent.new(id: "remove_logo", confirm_reflexes: "click->WhiteLabel#remove_logo" ) do .margin-bottom-30 = t('.remove_logo_confirm') + +// Hide groups tab boolean attribute + +.row + .three.columns.alpha + = f.label :hide_groups_tab, t('.hide_groups_tab') + .three.columns + = f.check_box :hide_groups_tab diff --git a/config/locales/en.yml b/config/locales/en.yml index 8e20e22529..fdf22e4a47 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1185,6 +1185,7 @@ en: remove_logo_confirm: "Are you sure you want to remove this logo?" remove_logo_success: "Logo removed" white_label_logo_link_label: "Link for the logo used in shopfront" + hide_groups_tab: "Hide groups tab in shopfront" actions: edit_profile: Settings properties: Properties diff --git a/spec/system/admin/enterprises_spec.rb b/spec/system/admin/enterprises_spec.rb index 3c75145ced..e786b5ff9a 100644 --- a/spec/system/admin/enterprises_spec.rb +++ b/spec/system/admin/enterprises_spec.rb @@ -706,6 +706,25 @@ describe ' expect(distributor1.reload.white_label_logo_link).to eq("https://www.openfoodnetwork.org") end end + + it "can check/uncheck the hide_groups_tab attribute" do + check "Hide groups tab in shopfront" + click_button 'Update' + expect(flash_message) + .to eq('Enterprise "First Distributor" has been successfully updated!') + expect(distributor1.reload.hide_groups_tab).to be true + + visit edit_admin_enterprise_path(distributor1) + within(".side_menu") do + click_link "White Label" + end + + uncheck "Hide groups tab in shopfront" + click_button 'Update' + expect(flash_message) + .to eq('Enterprise "First Distributor" has been successfully updated!') + expect(distributor1.reload.hide_groups_tab).to be false + end end end end From 0bec7562a09bb863776e6bc51346ba472af87c45 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 25 Apr 2023 17:22:42 +0200 Subject: [PATCH 3/3] When `hide_groups_tab` is set to false, do not display group in shopfront Co-Authored-By: Maikel --- app/helpers/shop_helper.rb | 8 ++++++- spec/system/consumer/white_label_spec.rb | 30 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/helpers/shop_helper.rb b/app/helpers/shop_helper.rb index 2f19c1d227..04709faf5d 100644 --- a/app/helpers/shop_helper.rb +++ b/app/helpers/shop_helper.rb @@ -24,7 +24,7 @@ module ShopHelper { name: 'about', title: t(:shopping_tabs_about), show: true }, { name: 'producers', title: t(:shopping_tabs_producers), show: true }, { name: 'contact', title: t(:shopping_tabs_contact), show: true }, - { name: 'groups', title: t(:shopping_tabs_groups), show: current_distributor.groups.any? }, + { name: 'groups', title: t(:shopping_tabs_groups), show: show_groups_tabs? }, ].select{ |tab| tab[:show] } end @@ -52,4 +52,10 @@ module ShopHelper true end + + private + + def show_groups_tabs? + !current_distributor.hide_groups_tab? && current_distributor.groups.any? + end end diff --git a/spec/system/consumer/white_label_spec.rb b/spec/system/consumer/white_label_spec.rb index 317a196d96..a4b46b5428 100644 --- a/spec/system/consumer/white_label_spec.rb +++ b/spec/system/consumer/white_label_spec.rb @@ -157,6 +157,36 @@ describe 'White label setting' do it_behaves_like "does not hide the OFN navigation" end + + context "manage hide_groups_tab preference when distributor belongs to a group" do + let(:group) { create(:enterprise_group) } + + before do + distributor.groups << group + end + + context "when the preference is set to true" do + before do + distributor.update_attribute(:hide_groups_tab, true) + end + + it "hides the groups tab" do + visit main_app.enterprise_shop_path(distributor) + expect(page).to have_no_selector "a[href='#groups']" + end + end + + context "when the preference is set to false" do + before do + distributor.update_attribute(:hide_groups_tab, false) + end + + it "shows the groups tab" do + visit main_app.enterprise_shop_path(distributor) + expect(page).to have_selector "a[href='#groups']" + end + end + end end context "manage the white_label_logo preference" do