diff --git a/ee/lib/ee/search/navigation.rb b/ee/lib/ee/search/navigation.rb index 52657b3c733e7cf7efe141b43224f2b1acc5b658..7fc6ebf08a98a67bfafddb949d156d808091868e 100644 --- a/ee/lib/ee/search/navigation.rb +++ b/ee/lib/ee/search/navigation.rb @@ -45,21 +45,21 @@ def zoekt_enabled? override :show_code_search_tab? def show_code_search_tab? return true if super - return false unless project.nil? + return false if project - global_search_code_tab_enabled = ::Feature.enabled?(:global_search_code_tab, user, type: :ops) - global_search_with_zoekt_enabled = ::Feature.enabled?(:zoekt_cross_namespace_search, user, type: :ops) + global_search_code_enabled = ::Feature.enabled?(:global_search_code_tab, user, type: :ops) + global_search_zoekt_enabled = ::Feature.enabled?(:zoekt_cross_namespace_search, user, type: :ops) zoekt_enabled_for_user = zoekt_enabled? && ::Search::Zoekt.enabled_for_user?(user) if show_elasticsearch_tabs? - return true if group.present? + return true if group - return global_search_code_tab_enabled + return global_search_code_enabled elsif zoekt_enabled_for_user return ::Search::Zoekt.search?(group) if group.present? - return global_search_code_tab_enabled && global_search_with_zoekt_enabled + return global_search_code_enabled && global_search_zoekt_enabled end false @@ -68,7 +68,6 @@ def show_code_search_tab? override :show_wiki_search_tab? def show_wiki_search_tab? return true if super - return false if project return false unless show_elasticsearch_tabs? return true if group @@ -88,7 +87,7 @@ def show_epics_search_tab? def show_commits_search_tab? return true if super # project search & user can search commits return false unless show_elasticsearch_tabs? # advanced search enabled - return true if group.present? # group search + return true if group # group search ::Feature.enabled?(:global_search_commits_tab, user, type: :ops) # global search end diff --git a/ee/spec/helpers/search_helper_spec.rb b/ee/spec/helpers/search_helper_spec.rb index b3008c7c70082f67d7fecaa8597a615b869178d6..910cce39ad09ad478fbf278d231f40c647ff9055 100644 --- a/ee/spec/helpers/search_helper_spec.rb +++ b/ee/spec/helpers/search_helper_spec.rb @@ -381,8 +381,7 @@ describe '.search_navigation_json' do context 'when all options enabled' do before do - allow(self).to receive_messages(current_user: build(:user), can?: true, project_search_tabs?: true, - feature_flag_tab_enabled?: true) + allow(self).to receive_messages(current_user: build(:user), can?: true, project_search_tabs?: true) allow(search_service).to receive_messages(show_elasticsearch_tabs?: true, show_epics?: true, show_snippets?: true) @project = nil diff --git a/lib/search/navigation.rb b/lib/search/navigation.rb index 77480c2ff02de7b7af5e7a8d1e57f6401ac98115..971b6f4ec801ca8b075e9c2194e2fb0c12ed403a 100644 --- a/lib/search/navigation.rb +++ b/lib/search/navigation.rb @@ -127,7 +127,7 @@ def show_user_search_tab? return true if tab_enabled_for_project?(:users) return false unless can?(user, :read_users_list) - project.nil? && feature_flag_tab_enabled?(:global_search_users_tab) + project.nil? && (group.present? || Feature.enabled?(:global_search_users_tab, user, type: :ops)) end def show_code_search_tab? @@ -145,13 +145,13 @@ def show_commits_search_tab? def show_issues_search_tab? return true if tab_enabled_for_project?(:issues) - project.nil? && feature_flag_tab_enabled?(:global_search_issues_tab) + project.nil? && (group.present? || Feature.enabled?(:global_search_issues_tab, user, type: :ops)) end def show_merge_requests_search_tab? return true if tab_enabled_for_project?(:merge_requests) - project.nil? && feature_flag_tab_enabled?(:global_search_merge_requests_tab) + project.nil? && (group.present? || Feature.enabled?(:global_search_merge_requests_tab, user, type: :ops)) end def show_comments_search_tab? @@ -161,17 +161,13 @@ def show_comments_search_tab? end def show_snippets_search_tab? - !!options[:show_snippets] && project.nil? && feature_flag_tab_enabled?(:global_search_snippet_titles_tab) + !!options[:show_snippets] && project.nil? && + (group.present? || Feature.enabled?(:global_search_snippet_titles_tab, user, type: :ops)) end def show_milestones_search_tab? project.nil? || tab_enabled_for_project?(:milestones) end - - # deprecated - this method is being refactored and will eventually be removed - def feature_flag_tab_enabled?(flag) - group.present? || Feature.enabled?(flag, user, type: :ops) - end end end diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb index d41154350720a175fcafc3db71090363adc788dc..615ff95c7c7768db45317d405df5a2cd8fc1e40c 100644 --- a/spec/helpers/search_helper_spec.rb +++ b/spec/helpers/search_helper_spec.rb @@ -1201,7 +1201,7 @@ def simple_sanitize(str) allow(self).to receive(:current_user).and_return(build(:user)) allow(search_service).to receive(:show_snippets?).and_return(true) allow_next_instance_of(Search::Navigation) do |search_nav| - allow(search_nav).to receive_messages(tab_enabled_for_project?: true, feature_flag_tab_enabled?: true) + allow(search_nav).to receive_messages(tab_enabled_for_project?: true) end @project = nil diff --git a/spec/lib/search/navigation_spec.rb b/spec/lib/search/navigation_spec.rb index 686965d04479eebd38ece6b57be0fe80f1572ebd..7f8ff6322f9ec5d7c3058419ea93bebba146ebcb 100644 --- a/spec/lib/search/navigation_spec.rb +++ b/spec/lib/search/navigation_spec.rb @@ -54,8 +54,7 @@ using RSpec::Parameterized::TableSyntax before do - allow(search_navigation) - .to receive_messages(can?: true, tab_enabled_for_project?: false, feature_flag_tab_enabled?: false) + allow(search_navigation).to receive_messages(can?: true, tab_enabled_for_project?: false) allow(search_navigation).to receive(:tab_enabled_for_project?).and_call_original end @@ -107,11 +106,12 @@ end with_them do - it 'data item condition is set correctly' do - allow(search_navigation).to receive(:feature_flag_tab_enabled?) - .with(:global_search_issues_tab).and_return(feature_flag_enabled) + before do + stub_feature_flags(global_search_issues_tab: feature_flag_enabled) allow(search_navigation).to receive(:tab_enabled_for_project?).with(:issues).and_return(tab_enabled) + end + it 'data item condition is set correctly' do expect(tabs[:issues][:condition]).to eq(condition) end end @@ -130,11 +130,12 @@ end with_them do - it 'data item condition is set correctly' do - allow(search_navigation).to receive(:feature_flag_tab_enabled?) - .with(:global_search_merge_requests_tab).and_return(feature_flag_enabled) + before do + stub_feature_flags(global_search_merge_requests_tab: feature_flag_enabled) allow(search_navigation).to receive(:tab_enabled_for_project?).with(:merge_requests).and_return(tab_enabled) + end + it 'data item condition is set correctly' do expect(tabs[:merge_requests][:condition]).to eq(condition) end end @@ -228,13 +229,14 @@ end with_them do - it 'data item condition is set correctly' do + before do + stub_feature_flags(global_search_users_tab: feature_flag_enabled) allow(search_navigation).to receive(:tab_enabled_for_project?).with(:users).and_return(tab_enabled) allow(search_navigation).to receive(:can?) .with(user, :read_users_list, project_double).and_return(can_read_users_list) - allow(search_navigation).to receive(:feature_flag_tab_enabled?) - .with(:global_search_users_tab).and_return(feature_flag_enabled) + end + it 'data item condition is set correctly' do expect(tabs[:users][:condition]).to eq(condition) end end @@ -255,10 +257,11 @@ with_them do let(:options) { { show_snippets: show_snippets } } - it 'data item condition is set correctly' do - allow(search_navigation).to receive(:feature_flag_tab_enabled?) - .with(:global_search_snippet_titles_tab).and_return(feature_flag_enabled) + before do + stub_feature_flags(global_search_snippet_titles_tab: feature_flag_enabled) + end + it 'data item condition is set correctly' do expect(tabs[:snippet_titles][:condition]).to eq(condition) end end