Commit f8f76fdbfd06184c53c4dc3832601f3c07aeba77

Authored by Dmitriy Zaporozhets
2 parents a10c08c4 b89d8497

Merge pull request #5427 from karlhungus/feature_search_code_in_public_repos

Allow public repo searching
app/controllers/search_controller.rb
@@ -3,16 +3,7 @@ class SearchController < ApplicationController @@ -3,16 +3,7 @@ class SearchController < ApplicationController
3 project_id = params[:project_id] 3 project_id = params[:project_id]
4 group_id = params[:group_id] 4 group_id = params[:group_id]
5 5
6 - project_ids = current_user.authorized_projects.map(&:id)  
7 -  
8 - if group_id.present?  
9 - @group = Group.find(group_id)  
10 - group_project_ids = @group.projects.map(&:id)  
11 - project_ids.select! { |id| group_project_ids.include?(id)}  
12 - elsif project_id.present?  
13 - @project = Project.find(params[:project_id])  
14 - project_ids.select! { |id| id == project_id.to_i}  
15 - end 6 + project_ids = find_project_ids(group_id, project_id)
16 7
17 result = SearchContext.new(project_ids, current_user, params).execute 8 result = SearchContext.new(project_ids, current_user, params).execute
18 9
@@ -23,4 +14,20 @@ class SearchController < ApplicationController @@ -23,4 +14,20 @@ class SearchController < ApplicationController
23 @blobs = Kaminari.paginate_array(result[:blobs]).page(params[:page]).per(20) 14 @blobs = Kaminari.paginate_array(result[:blobs]).page(params[:page]).per(20)
24 @total_results = @projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.total_count 15 @total_results = @projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.total_count
25 end 16 end
  17 +
  18 + private
  19 +
  20 + def find_project_ids(group_id, project_id)
  21 + project_ids = current_user.authorized_projects.map(&:id)
  22 +
  23 + if group_id.present?
  24 + @group = Group.find(group_id)
  25 + group_project_ids = @group.projects.map(&:id)
  26 + project_ids.select! { |id| group_project_ids.include?(id) }
  27 + elsif project_id.present?
  28 + @project = Project.find(project_id)
  29 + project_ids = @project.public ? [@project.id] : project_ids.select { |id| id == project_id.to_i }
  30 + end
  31 + project_ids
  32 + end
26 end 33 end
spec/controllers/search_controller_spec.rb 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +require 'spec_helper'
  2 +
  3 +describe SearchController do
  4 + let(:project) { create(:project, public: true) }
  5 + let(:user) { create(:user) }
  6 +
  7 + before do
  8 + sign_in(user)
  9 + end
  10 +
  11 + describe '#find_project_ids' do
  12 + it 'should include public projects ids when searching within a single project' do
  13 + project_ids = controller.send(:find_project_ids,nil, project.id)
  14 + project_ids.size.should == 1
  15 + project_ids[0].should == project.id
  16 + end
  17 + end
  18 +end