diff --git a/backend/lib/spree/backend_configuration.rb b/backend/lib/spree/backend_configuration.rb index d1a10c9980b..ef57d259c3d 100644 --- a/backend/lib/spree/backend_configuration.rb +++ b/backend/lib/spree/backend_configuration.rb @@ -131,7 +131,20 @@ def menu_items MenuItem.new( CONFIGURATION_TABS, 'wrench', - condition: -> { can?(:admin, Spree::Store) }, + condition: -> { + can?(:admin, Spree::Store) || + can?(:show, Spree::AdjustmentReason) || + can?(:show, Spree::PaymentMethod) || + can?(:show, Spree::RefundReason) || + can?(:show, Spree::ReimbursementType) || + can?(:show, Spree::ShippingCategory) || + can?(:show, Spree::ShippingMethod) || + can?(:show, Spree::StockLocation) || + can?(:show, Spree::TaxCategory) || + can?(:show, Spree::TaxRate) || + can?(:show, Spree::ReturnReason) || + can?(:show, Spree::Zone) + }, label: :settings, partial: 'spree/admin/shared/settings_sub_menu', url: :admin_stores_path, diff --git a/backend/spec/lib/spree/backend_configuration_spec.rb b/backend/spec/lib/spree/backend_configuration_spec.rb index 1e9ea5d5d7d..4b53ce870b8 100644 --- a/backend/spec/lib/spree/backend_configuration_spec.rb +++ b/backend/spec/lib/spree/backend_configuration_spec.rb @@ -18,5 +18,17 @@ expect(stock_menu_item.match_path).to eq('/stock_items') end end + + describe 'menu tab for settings' do + let(:menu_item) do + subject.find { |item| item.label == :settings } + end + + it 'is shown if any of its submenus are present' do + view = double("view", can?: false) + expect(view).to receive(:can?).at_least(12).times + view.instance_exec(&menu_item.condition) + end + end end end