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/finders/issues_finder_spec.rb')
-rw-r--r--spec/finders/issues_finder_spec.rb45
1 files changed, 36 insertions, 9 deletions
diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb
index c22e56c3b9e..aa9357a686a 100644
--- a/spec/finders/issues_finder_spec.rb
+++ b/spec/finders/issues_finder_spec.rb
@@ -588,10 +588,37 @@ RSpec.describe IssuesFinder do
end
context 'filtering by issue term' do
- let(:params) { { search: 'git' } }
+ let(:params) { { search: search_term } }
- it 'returns issues with title and description match for search term' do
- expect(issues).to contain_exactly(issue1, issue2)
+ let_it_be(:english) { create(:issue, project: project1, title: 'title', description: 'something english') }
+ let_it_be(:japanese) { create(:issue, project: project1, title: '日本語 title', description: 'another english description') }
+
+ context 'with latin search term' do
+ let(:search_term) { 'title english' }
+
+ it 'returns matching issues' do
+ expect(issues).to contain_exactly(english, japanese)
+ end
+ end
+
+ context 'with non-latin search term' do
+ let(:search_term) { '日本語' }
+
+ it 'returns matching issues' do
+ expect(issues).to contain_exactly(japanese)
+ end
+ end
+
+ context 'when full-text search is disabled' do
+ let(:search_term) { 'somet' }
+
+ before do
+ stub_feature_flags(issues_full_text_search: false)
+ end
+
+ it 'allows partial word matches' do
+ expect(issues).to contain_exactly(english)
+ end
end
context 'with anonymous user' do
@@ -1257,7 +1284,7 @@ RSpec.describe IssuesFinder do
end
context 'when the force_cte param is falsey' do
- let(:params) { { search: 'foo' } }
+ let(:params) { { search: '日本語' } }
it 'returns false' do
expect(finder.use_cte_for_search?).to be_falsey
@@ -1265,7 +1292,7 @@ RSpec.describe IssuesFinder do
end
context 'when a non-simple sort is given' do
- let(:params) { { search: 'foo', attempt_project_search_optimizations: true, sort: 'popularity' } }
+ let(:params) { { search: '日本語', attempt_project_search_optimizations: true, sort: 'popularity' } }
it 'returns false' do
expect(finder.use_cte_for_search?).to be_falsey
@@ -1274,7 +1301,7 @@ RSpec.describe IssuesFinder do
context 'when all conditions are met' do
context "uses group search optimization" do
- let(:params) { { search: 'foo', attempt_group_search_optimizations: true } }
+ let(:params) { { search: '日本語', attempt_group_search_optimizations: true } }
it 'returns true' do
expect(finder.use_cte_for_search?).to be_truthy
@@ -1283,7 +1310,7 @@ RSpec.describe IssuesFinder do
end
context "uses project search optimization" do
- let(:params) { { search: 'foo', attempt_project_search_optimizations: true } }
+ let(:params) { { search: '日本語', attempt_project_search_optimizations: true } }
it 'returns true' do
expect(finder.use_cte_for_search?).to be_truthy
@@ -1292,7 +1319,7 @@ RSpec.describe IssuesFinder do
end
context 'with simple sort' do
- let(:params) { { search: 'foo', attempt_project_search_optimizations: true, sort: 'updated_desc' } }
+ let(:params) { { search: '日本語', attempt_project_search_optimizations: true, sort: 'updated_desc' } }
it 'returns true' do
expect(finder.use_cte_for_search?).to be_truthy
@@ -1301,7 +1328,7 @@ RSpec.describe IssuesFinder do
end
context 'with simple sort as a symbol' do
- let(:params) { { search: 'foo', attempt_project_search_optimizations: true, sort: :updated_desc } }
+ let(:params) { { search: '日本語', attempt_project_search_optimizations: true, sort: :updated_desc } }
it 'returns true' do
expect(finder.use_cte_for_search?).to be_truthy