Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/search_helper_spec.rb')
-rw-r--r--spec/helpers/search_helper_spec.rb378
1 files changed, 31 insertions, 347 deletions
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index b2606fcfae1..1ff7e48abfc 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -153,15 +153,7 @@ RSpec.describe SearchHelper, feature_category: :global_search do
end
end
- [true, false].each do |enabled|
- context "with feature flag autcomplete_users_use_search_service #{enabled}" do
- before do
- stub_feature_flags(autocomplete_users_use_search_service: enabled)
- end
-
- include_examples 'for users'
- end
- end
+ include_examples 'for users'
it "includes the required project attrs" do
project = create(:project, namespace: create(:namespace, owner: user))
@@ -730,78 +722,6 @@ RSpec.describe SearchHelper, feature_category: :global_search do
end
end
- describe '#show_user_search_tab?' do
- subject { show_user_search_tab? }
-
- let(:current_user) { build(:user) }
-
- before do
- allow(self).to receive(:current_user).and_return(current_user)
- end
-
- context 'when project search' do
- before do
- @project = :some_project
-
- expect(self).to receive(:project_search_tabs?)
- .with(:users)
- .and_return(:value)
- end
-
- it 'delegates to project_search_tabs?' do
- expect(subject).to eq(:value)
- end
- end
-
- context 'when group search' do
- before do
- @group = :some_group
- end
-
- context 'when current_user can read_users_list' do
- before do
- allow(self).to receive(:can?).with(current_user, :read_users_list).and_return(true)
- end
-
- it { is_expected.to eq(true) }
- end
-
- context 'when current_user cannot read_users_list' do
- before do
- allow(self).to receive(:can?).with(current_user, :read_users_list).and_return(false)
- end
-
- it { is_expected.to eq(false) }
- end
- end
-
- context 'when global search' do
- context 'when current_user can read_users_list' do
- before do
- allow(self).to receive(:can?).with(current_user, :read_users_list).and_return(true)
- end
-
- it { is_expected.to eq(true) }
-
- context 'when global_search_user_tab feature flag is disabled' do
- before do
- stub_feature_flags(global_search_users_tab: false)
- end
-
- it { is_expected.to eq(false) }
- end
- end
-
- context 'when current_user cannot read_users_list' do
- before do
- allow(self).to receive(:can?).with(current_user, :read_users_list).and_return(false)
- end
-
- it { is_expected.to eq(false) }
- end
- end
- end
-
describe '#repository_ref' do
using RSpec::Parameterized::TableSyntax
@@ -1121,248 +1041,24 @@ RSpec.describe SearchHelper, feature_category: :global_search do
end
end
- describe '.search_navigation' do
- using RSpec::Parameterized::TableSyntax
- let(:user) { build(:user) }
- let_it_be(:project) { build(:project) }
-
- before do
- allow(self).to receive(:current_user).and_return(user)
- allow(self).to receive(:can?).and_return(true)
- allow(self).to receive(:project_search_tabs?).and_return(false)
- allow(self).to receive(:feature_flag_tab_enabled?).and_return(false)
- end
-
- context 'projects' do
- where(:global_project, :condition) do
- nil | true
- ref(:project) | false
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
-
- expect(search_navigation[:projects][:condition]).to eq(condition)
- end
- end
- end
-
- context 'code' do
- where(:feature_flag_tab_enabled, :show_elasticsearch_tabs, :global_project, :project_search_tabs, :condition) do
- false | false | nil | false | false
- true | true | nil | true | true
- true | false | nil | false | false
- false | true | nil | false | false
- false | false | ref(:project) | true | true
- true | false | ref(:project) | false | false
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(search_service).to receive(:show_elasticsearch_tabs?).and_return(show_elasticsearch_tabs)
- allow(self).to receive(:feature_flag_tab_enabled?).with(:global_search_code_tab).and_return(feature_flag_tab_enabled)
- allow(self).to receive(:project_search_tabs?).with(:blobs).and_return(project_search_tabs)
-
- expect(search_navigation[:blobs][:condition]).to eq(condition)
- end
- end
- end
-
- context 'issues' do
- where(:project_search_tabs, :global_search_issues_tab, :global_project, :condition) do
- false | false | nil | false
- false | true | nil | true
- false | true | ref(:project) | false
- false | false | ref(:project) | false
- true | false | nil | true
- true | true | nil | true
- true | false | ref(:project) | true
- true | true | ref(:project) | true
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(self).to receive(:feature_flag_tab_enabled?).with(:global_search_issues_tab).and_return(global_search_issues_tab)
- allow(self).to receive(:project_search_tabs?).with(:issues).and_return(project_search_tabs)
-
- expect(search_navigation[:issues][:condition]).to eq(condition)
- end
- end
- end
-
- context 'merge requests' do
- where(:project_search_tabs, :feature_flag_tab_enabled, :global_project, :condition) do
- false | false | nil | false
- true | false | nil | true
- false | false | ref(:project) | false
- true | false | ref(:project) | true
- false | true | nil | true
- true | true | nil | true
- false | true | ref(:project) | false
- true | true | ref(:project) | true
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(self).to receive(:feature_flag_tab_enabled?).with(:global_search_merge_requests_tab).and_return(feature_flag_tab_enabled)
- allow(self).to receive(:project_search_tabs?).with(:merge_requests).and_return(project_search_tabs)
-
- expect(search_navigation[:merge_requests][:condition]).to eq(condition)
- end
- end
- end
-
- context 'wiki' do
- where(:global_search_wiki_tab, :show_elasticsearch_tabs, :global_project, :project_search_tabs, :condition) do
- false | false | nil | true | true
- false | false | nil | false | false
- false | false | ref(:project) | false | false
- false | true | nil | false | false
- false | true | ref(:project) | false | false
- true | false | nil | false | false
- true | true | ref(:project) | false | false
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(search_service).to receive(:show_elasticsearch_tabs?).and_return(show_elasticsearch_tabs)
- allow(self).to receive(:feature_flag_tab_enabled?).with(:global_search_wiki_tab).and_return(global_search_wiki_tab)
- allow(self).to receive(:project_search_tabs?).with(:wiki_blobs).and_return(project_search_tabs)
-
- expect(search_navigation[:wiki_blobs][:condition]).to eq(condition)
- end
- end
- end
-
- context 'commits' do
- where(:global_search_commits_tab, :show_elasticsearch_tabs, :global_project, :project_search_tabs, :condition) do
- false | false | nil | true | true
- false | false | ref(:project) | true | true
- false | false | nil | false | false
- false | true | ref(:project) | false | false
- false | true | nil | false | false
- true | false | nil | false | false
- true | false | ref(:project) | false | false
- true | true | ref(:project) | false | false
- true | true | nil | false | true
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(search_service).to receive(:show_elasticsearch_tabs?).and_return(show_elasticsearch_tabs)
- allow(self).to receive(:feature_flag_tab_enabled?).with(:global_search_commits_tab).and_return(global_search_commits_tab)
- allow(self).to receive(:project_search_tabs?).with(:commits).and_return(project_search_tabs)
-
- expect(search_navigation[:commits][:condition]).to eq(condition)
- end
- end
- end
-
- context 'comments' do
- where(:project_search_tabs, :show_elasticsearch_tabs, :global_project, :condition) do
- true | true | nil | true
- true | true | ref(:project) | true
- false | false | nil | false
- false | false | ref(:project) | false
- false | true | nil | true
- false | true | ref(:project) | false
- true | false | nil | true
- true | false | ref(:project) | true
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(search_service).to receive(:show_elasticsearch_tabs?).and_return(show_elasticsearch_tabs)
- allow(self).to receive(:project_search_tabs?).with(:notes).and_return(project_search_tabs)
-
- expect(search_navigation[:notes][:condition]).to eq(condition)
- end
- end
- end
-
- context 'milestones' do
- where(:global_project, :project_search_tabs, :condition) do
- ref(:project) | true | true
- nil | false | true
- ref(:project) | false | false
- nil | true | true
- end
-
- with_them do
- it 'data item condition is set correctly' do
- @project = global_project
- allow(self).to receive(:project_search_tabs?).with(:milestones).and_return(project_search_tabs)
-
- expect(search_navigation[:milestones][:condition]).to eq(condition)
- end
- end
- end
-
- context 'users' do
- where(:show_user_search_tab, :condition) do
- true | true
- false | false
- end
-
- with_them do
- it 'data item condition is set correctly' do
- allow(self).to receive(:show_user_search_tab?).and_return(show_user_search_tab)
-
- expect(search_navigation[:users][:condition]).to eq(condition)
- end
- end
- end
-
- context 'snippet_titles' do
- where(:global_project, :global_show_snippets, :global_feature_flag_enabled, :condition) do
- ref(:project) | true | false | false
- nil | false | false | false
- ref(:project) | false | false | false
- nil | true | false | false
- ref(:project) | true | true | false
- nil | false | true | false
- ref(:project) | false | true | false
- nil | true | true | true
- end
-
- with_them do
- it 'data item condition is set correctly' do
- allow(search_service).to receive(:show_snippets?).and_return(global_show_snippets)
- allow(self).to receive(:feature_flag_tab_enabled?).with(:global_search_snippet_titles_tab)
- .and_return(global_feature_flag_enabled)
- @project = global_project
-
- expect(search_navigation[:snippet_titles][:condition]).to eq(condition)
- end
- end
- end
- end
-
describe '.search_navigation_json' do
using RSpec::Parameterized::TableSyntax
- context 'with data' do
+ context 'with some tab conditions set to false' do
example_data_1 = {
projects: { label: _("Projects"), condition: true },
- blobs: { label: _("Code"), condition: false }
+ blobs: { label: _("Code"), condition: false }
}
example_data_2 = {
projects: { label: _("Projects"), condition: false },
- blobs: { label: _("Code"), condition: false }
+ blobs: { label: _("Code"), condition: false }
}
example_data_3 = {
projects: { label: _("Projects"), condition: true },
- blobs: { label: _("Code"), condition: true },
- epics: { label: _("Epics"), condition: true }
+ blobs: { label: _("Code"), condition: true },
+ epics: { label: _("Epics"), condition: true }
}
where(:data, :matcher) do
@@ -1373,28 +1069,31 @@ RSpec.describe SearchHelper, feature_category: :global_search do
with_them do
it 'renders data correctly' do
- allow(self).to receive(:search_navigation).with(no_args).and_return(data)
+ allow(self).to receive(:current_user).and_return(build(:user))
+ allow_next_instance_of(Search::Navigation) do |search_nav|
+ allow(search_nav).to receive(:tabs).and_return(data)
+ end
expect(search_navigation_json).to instance_exec(&matcher)
end
end
end
- end
- describe '.search_navigation_json with .search_navigation' do
- before do
- allow(self).to receive(:current_user).and_return(build(:user))
- allow(self).to receive(:can?).and_return(true)
- allow(self).to receive(:project_search_tabs?).and_return(true)
- allow(self).to receive(:feature_flag_tab_enabled?).and_return(true)
- allow(self).to receive(:feature_flag_tab_enabled?).and_return(true)
- allow(search_service).to receive(:show_elasticsearch_tabs?).and_return(true)
- allow(search_service).to receive(:show_snippets?).and_return(true)
- @project = nil
- end
+ context 'when all options enabled' do
+ before do
+ 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(:tab_enabled_for_project?).and_return(true)
+ allow(search_nav).to receive(:feature_flag_tab_enabled?).and_return(true)
+ end
+
+ @project = nil
+ end
- it 'test search navigation item order for CE all options enabled' do
- expect(Gitlab::Json.parse(search_navigation_json).keys).to eq(%w[projects blobs issues merge_requests wiki_blobs commits notes milestones users snippet_titles])
+ it 'returns items in order' do
+ expect(Gitlab::Json.parse(search_navigation_json).keys).to eq(%w[projects blobs issues merge_requests wiki_blobs commits notes milestones users snippet_titles])
+ end
end
end
@@ -1404,9 +1103,9 @@ RSpec.describe SearchHelper, feature_category: :global_search do
context 'data' do
where(:scope, :label, :data, :search, :active_scope) do
"projects" | "Projects" | { qa_selector: 'projects_tab' } | nil | "projects"
- "snippet_titles" | "Titles and Descriptions" | nil | { snippets: "test" } | "code"
+ "snippet_titles" | "Snippets" | nil | { snippets: "test" } | "code"
"projects" | "Projects" | { qa_selector: 'projects_tab' } | nil | "issue"
- "snippet_titles" | "Titles and Descriptions" | nil | { snippets: "test" } | "snippet_titles"
+ "snippet_titles" | "Snippets" | nil | { snippets: "test" } | "snippet_titles"
end
with_them do
@@ -1439,27 +1138,12 @@ RSpec.describe SearchHelper, feature_category: :global_search do
end
end
- describe 'show_elasticsearch_tabs' do
- subject { search_service.show_elasticsearch_tabs? }
-
- let(:user) { build(:user) }
-
- before do
- allow(self).to receive(:current_user).and_return(user)
- end
-
- it { is_expected.to eq(false) }
- end
-
- describe 'show_epics' do
- subject { search_service.show_epics? }
-
- let(:user) { build(:user) }
-
- before do
- allow(self).to receive(:current_user).and_return(user)
+ describe '#wiki_blob_link' do
+ let_it_be(:project) { create :project, :wiki_repo }
+ let(:wiki_blob) do
+ Gitlab::Search::FoundBlob.new({ path: 'test', basename: 'test', ref: 'master', data: 'foo', startline: 2, project: project, project_id: project.id })
end
- it { is_expected.to eq(false) }
+ it { expect(wiki_blob_link(wiki_blob)).to eq("/#{project.namespace.path}/#{project.path}/-/wikis/#{wiki_blob.path}") }
end
end