summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/contexts/search_context.rb4
-rw-r--r--app/controllers/search_controller.rb1
-rw-r--r--app/models/wiki.rb6
-rw-r--r--app/views/search/show.html.haml19
-rw-r--r--features/dashboard/search.feature5
-rw-r--r--features/steps/dashboard/dashboard_search.rb17
6 files changed, 50 insertions, 2 deletions
diff --git a/app/contexts/search_context.rb b/app/contexts/search_context.rb
index 6e5e8c5e9b5..9becb8d674f 100644
--- a/app/contexts/search_context.rb
+++ b/app/contexts/search_context.rb
@@ -13,6 +13,7 @@ class SearchContext
result[:projects] = Project.where(id: project_ids).search(query).limit(10)
result[:merge_requests] = MergeRequest.where(project_id: project_ids).search(query).limit(10)
result[:issues] = Issue.where(project_id: project_ids).search(query).limit(10)
+ result[:wiki_pages] = Wiki.where(project_id: project_ids).search(query).limit(10)
result
end
@@ -20,7 +21,8 @@ class SearchContext
@result ||= {
projects: [],
merge_requests: [],
- issues: []
+ issues: [],
+ wiki_pages: []
}
end
end
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 1dc8507e019..4f45f9ddccb 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -5,5 +5,6 @@ class SearchController < ApplicationController
@projects = result[:projects]
@merge_requests = result[:merge_requests]
@issues = result[:issues]
+ @wiki_pages = result[:wiki_pages]
end
end
diff --git a/app/models/wiki.rb b/app/models/wiki.rb
index b1f41d636c7..895c2896462 100644
--- a/app/models/wiki.rb
+++ b/app/models/wiki.rb
@@ -15,6 +15,12 @@ class Wiki < ActiveRecord::Base
slug
end
+ class << self
+ def search(query)
+ where("title like :query OR content like :query", query: "%#{query}%")
+ end
+ end
+
protected
def self.regenerate_from wiki
diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml
index d85c24ec105..0d5f545850a 100644
--- a/app/views/search/show.html.haml
+++ b/app/views/search/show.html.haml
@@ -9,7 +9,7 @@
%br
%h3
Search results
- %small (#{@projects.count + @merge_requests.count + @issues.count})
+ %small (#{@projects.count + @merge_requests.count + @issues.count + @wiki_pages.count})
%hr
.search_results
.row
@@ -69,6 +69,23 @@
%tr
%td
%h4.nothing_here_message No Issues
+ .span6
+ %table
+ %thead
+ %tr
+ %th Wiki
+ %tbody
+ - @wiki_pages.each do |wiki_page|
+ %tr
+ %td
+ = link_to project_wiki_path(wiki_page.project, wiki_page) do
+ %strong.term= truncate wiki_page.title, length: 40
+ %strong.right
+ %span.label= wiki_page.project.name
+ - if @wiki_pages.blank?
+ %tr
+ %td
+ %h4.nothing_here_message No wiki pages
:javascript
$(function() {
$(".search_results .term").highlight("#{params[:search]}");
diff --git a/features/dashboard/search.feature b/features/dashboard/search.feature
index 91d870f46f3..9813d9d1e7c 100644
--- a/features/dashboard/search.feature
+++ b/features/dashboard/search.feature
@@ -2,8 +2,13 @@ Feature: Dashboard Search
Background:
Given I sign in as a user
And I own project "Shop"
+ And Project "Shop" has wiki page "Contibuting guide"
And I visit dashboard search page
Scenario: I should see project I am looking for
Given I search for "Sho"
Then I should see "Shop" project link
+
+ Scenario: I should see wiki page I am looking for
+ Given I search for "Contibuting"
+ Then I should see "Contibuting guide" wiki link \ No newline at end of file
diff --git a/features/steps/dashboard/dashboard_search.rb b/features/steps/dashboard/dashboard_search.rb
index e35858985d6..e902e40456f 100644
--- a/features/steps/dashboard/dashboard_search.rb
+++ b/features/steps/dashboard/dashboard_search.rb
@@ -15,4 +15,21 @@ class DashboardSearch < Spinach::FeatureSteps
@project = Factory :project, :name => "Shop"
@project.add_access(@user, :admin)
end
+
+ Given 'I search for "Contibuting"' do
+ fill_in "dashboard_search", :with => "Contibuting"
+ click_button "Search"
+ end
+
+ And 'Project "Shop" has wiki page "Contibuting guide"' do
+ @wiki_page = Factory :wiki, :project => @project,
+ :title => "Contibuting guide",
+ :slug => "contributing"
+ end
+
+ Then 'I should see "Contibuting guide" wiki link' do
+ page.should have_link "Contibuting guide"
+ end
+
+
end