Commit bdb9340e authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #7385 from Razer6/fix_search_empty_project

Fix 500 on searching on empty project, restyle search page
parents 7122a823 f361be9e
......@@ -341,3 +341,18 @@ table {
.footer-links a {
margin-right: 15px;
}
.search_box {
position: relative;
padding: 30px;
text-align: center;
background-color: #F9F9F9;
border: 1px solid #DDDDDD;
border-radius: 0px;
}
.search_glyph {
color: #555;
font-size: 42px;
}
......@@ -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
......
......@@ -9,10 +9,16 @@
.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
= render partial: "search/results/empty", :locals => { message: "We couldn't find any matching code" }
- else
%ul.bordered-list
= render partial: "search/results/merge_request", collection: @search_results[:merge_requests]
= render partial: "search/results/issue", collection: @search_results[:issues]
= render partial: "search/results/note", collection: @search_results[:notes]
- if (@search_results[:merge_requests] || @search_results[:issues] || @search_results[:notes]).length > 0
%ul.bordered-list
= render partial: "search/results/merge_request", collection: @search_results[:merge_requests]
= render partial: "search/results/issue", collection: @search_results[:issues]
= render partial: "search/results/note", collection: @search_results[:notes]
- else
= render partial: "search/results/empty", :locals => { message: "We couldn't find any issues, merge requests or notes" }
.search_box
.search_glyph
%span.icon-search
%h4 #{message}
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
......@@ -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
......@@ -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")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment