diff options
-rw-r--r-- | app/services/search/project_service.rb | 8 | ||||
-rw-r--r-- | app/views/search/_project_results.html.haml | 7 | ||||
-rw-r--r-- | features/project/source/search_code.feature | 10 | ||||
-rw-r--r-- | features/steps/project/search_code.rb | 12 | ||||
-rw-r--r-- | features/steps/shared/project.rb | 7 |
5 files changed, 35 insertions, 9 deletions
diff --git a/app/services/search/project_service.rb b/app/services/search/project_service.rb index 493dee95f90..8aac18840e4 100644 --- a/app/services/search/project_service.rb +++ b/app/services/search/project_service.rb @@ -12,7 +12,13 @@ module Search return result unless query.present? if params[:search_code].present? - blobs = project.repository.search_files(query, params[:repository_ref]) unless project.empty_repo? + if !@project.empty_repo? + blobs = project.repository.search_files(query, + params[:repository_ref]) + else + blobs = Array.new + end + blobs = Kaminari.paginate_array(blobs).page(params[:page]).per(20) result[:blobs] = blobs result[:total_results] = blobs.total_count diff --git a/app/views/search/_project_results.html.haml b/app/views/search/_project_results.html.haml index af3b97879c7..1fc1bf19560 100644 --- a/app/views/search/_project_results.html.haml +++ b/app/views/search/_project_results.html.haml @@ -9,8 +9,11 @@ .search_results - if params[:search_code].present? .blob-results - = render partial: "search/results/blob", collection: @search_results[:blobs] - = paginate @search_results[:blobs], theme: 'gitlab' + - if !@search_results[:blobs].empty? + = render partial: "search/results/blob", collection: @search_results[:blobs] + = paginate @search_results[:blobs], theme: 'gitlab' + - else + %span We couldn't find any matching code - else %ul.bordered-list = render partial: "search/results/merge_request", collection: @search_results[:merge_requests] diff --git a/features/project/source/search_code.feature b/features/project/source/search_code.feature index ad8a650d895..93b326696d0 100644 --- a/features/project/source/search_code.feature +++ b/features/project/source/search_code.feature @@ -1,9 +1,15 @@ Feature: Project Search code Background: Given I sign in as a user - And I own project "Shop" - Given I visit project source page Scenario: Search for term "coffee" + Given I own project "Shop" + And I visit project source page When I search for term "coffee" Then I should see files from repository containing "coffee" + + Scenario: Search on empty project + Given I own an empty project + And I visit my project's home page + When I search for term "coffee" + Then I should see empty result diff --git a/features/steps/project/search_code.rb b/features/steps/project/search_code.rb index 8d130a8ed0d..affa7d3b43b 100644 --- a/features/steps/project/search_code.rb +++ b/features/steps/project/search_code.rb @@ -3,14 +3,18 @@ class ProjectSearchCode < Spinach::FeatureSteps include SharedProject include SharedPaths - When 'I search for term "coffee"' do + step 'I search for term "coffee"' do fill_in "search", with: "coffee" click_button "Go" click_link 'Repository Code' end - Then 'I should see files from repository containing "coffee"' do - page.should have_content "coffee" - page.should have_content " CONTRIBUTING.md" + step 'I should see files from repository containing "coffee"' do + page.should have_content 'coffee' + page.should have_content 'CONTRIBUTING.md' + end + + step 'I should see empty result' do + page.should have_content "We couldn't find any matching code" end end diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb index 655840f447d..c131976614f 100644 --- a/features/steps/shared/project.rb +++ b/features/steps/shared/project.rb @@ -21,6 +21,13 @@ module SharedProject @project.team << [@user, :master] end + # Create an empty project without caring about the name + And 'I own an empty project' do + @project = create(:empty_project, + name: 'Empty Project', namespace: @user.namespace) + @project.team << [@user, :master] + end + And 'project "Shop" has push event' do @project = Project.find_by(name: "Shop") |