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/services/search_service_spec.rb')
-rw-r--r--spec/services/search_service_spec.rb101
1 files changed, 101 insertions, 0 deletions
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index 02de83a2df8..e5220022cb4 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -235,6 +235,31 @@ describe SearchService do
end
describe '#search_objects' do
+ # this shared example expects 3 results to be returned, can be overrided
+ shared_examples 'pagination' do |params|
+ let(:results_count) { 3 }
+ let(:last_page_count) { 1 }
+
+ def search(per_page: nil, page: nil)
+ params[:per_page] = per_page if per_page
+ params[:page] = page if page
+
+ described_class.new(user, params).search_objects
+ end
+
+ it 'returns all 3 objects with default params' do
+ expect(search.count).to eq(results_count)
+ end
+
+ it 'returns correct count of results ' do
+ expect(search(per_page: 2).count).to eq(2)
+ end
+
+ it 'returns correct result page' do
+ expect(search(per_page: 2, page: 2).count).to eq(last_page_count)
+ end
+ end
+
context 'with accessible project_id' do
it 'returns objects in the project' do
search_objects = described_class.new(
@@ -245,6 +270,26 @@ describe SearchService do
expect(search_objects.first).to eq note
end
+
+ context 'pagination' do
+ before do
+ [
+ create(:note_on_issue, project: accessible_project, note: 'simple note'),
+ create(:note_on_issue, project: accessible_project, note: 'some simple note'),
+ create(:note_on_issue, project: accessible_project, note: 'non simple note')
+ ]
+ end
+
+ let(:params) do
+ {
+ project_id: accessible_project.id,
+ scope: 'notes',
+ search: 'simple'
+ }
+ end
+
+ include_examples 'pagination'
+ end
end
context 'with accessible project_id and \'true\' snippets' do
@@ -269,6 +314,25 @@ describe SearchService do
expect(search_objects.first).to eq snippet
end
+
+ context 'pagination' do
+ before do
+ [
+ create(:snippet, author: user, content: 'simple snippet'),
+ create(:snippet, author: user, content: 'some simple snippet'),
+ create(:snippet, author: user, content: 'non simple snippet')
+ ]
+ end
+
+ let(:params) do
+ {
+ snippets: 'true',
+ search: 'simple'
+ }
+ end
+
+ include_examples 'pagination'
+ end
end
context 'with accessible group_id' do
@@ -280,6 +344,25 @@ describe SearchService do
expect(search_objects.first).to eq group_project
end
+
+ context 'pagination' do
+ before do
+ [
+ create(:project, group: accessible_group, name: 'group_project1'),
+ create(:project, group: accessible_group, name: 'group_project2'),
+ create(:project, group: accessible_group, name: 'group_project3')
+ ]
+ end
+
+ let(:params) do
+ {
+ group_id: accessible_group.id,
+ search: 'group'
+ }
+ end
+
+ include_examples 'pagination'
+ end
end
context 'with no project_id, group_id or snippets' do
@@ -290,6 +373,24 @@ describe SearchService do
expect(search_objects.first).to eq public_project
end
+
+ context 'pagination' do
+ before do
+ [
+ create(:project, :public, name: 'public_project1'),
+ create(:project, :public, name: 'public_project2'),
+ create(:project, :public, name: 'public_project3')
+ ]
+ end
+
+ let(:params) do
+ {
+ search: 'public'
+ }
+ end
+
+ include_examples 'pagination'
+ end
end
end
end