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:
authorYorick Peterse <yorickpeterse@gmail.com>2015-11-20 17:48:05 +0300
committerYorick Peterse <yorickpeterse@gmail.com>2015-11-20 17:53:04 +0300
commitfed059a12ddde628a7d19d008c199da00990ce19 (patch)
tree8ab0358443b6b258efda7905554e6aadb78be243
parentba4dc176f812d8616657354778023c76f587f783 (diff)
Port GitLab EE ProjectsFinder changes
These changes were added in GitLab EE commit d39de0ea91b26b8840195e5674b92c353cc16661. The tests were a bit bugged (they used a non existing group, thus not testing a crucial part) which I only noticed when porting CE changes to EE.
-rw-r--r--app/finders/projects_finder.rb10
-rw-r--r--spec/finders/projects_finder_spec.rb17
2 files changed, 17 insertions, 10 deletions
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb
index dd35c215c50..3b4e0362e04 100644
--- a/app/finders/projects_finder.rb
+++ b/app/finders/projects_finder.rb
@@ -23,17 +23,17 @@ class ProjectsFinder
group = options[:group]
if group
- base, extra = group_projects(current_user, group)
+ segments = group_projects(current_user, group)
else
- base, extra = all_projects(current_user)
+ segments = all_projects(current_user)
end
- if base and extra
- union = Gitlab::SQL::Union.new([base.select(:id), extra.select(:id)])
+ if segments.length > 1
+ union = Gitlab::SQL::Union.new(segments.map { |s| s.select(:id) })
Project.where("projects.id IN (#{union.to_sql})")
else
- base
+ segments.first
end
end
diff --git a/spec/finders/projects_finder_spec.rb b/spec/finders/projects_finder_spec.rb
index d1dede78f74..f32641ef0f6 100644
--- a/spec/finders/projects_finder_spec.rb
+++ b/spec/finders/projects_finder_spec.rb
@@ -3,10 +3,19 @@ require 'spec_helper'
describe ProjectsFinder do
describe '#execute' do
let(:user) { create(:user) }
+ let(:group) { create(:group) }
- let!(:private_project) { create(:project, :private) }
- let!(:internal_project) { create(:project, :internal) }
- let!(:public_project) { create(:project, :public) }
+ let!(:private_project) do
+ create(:project, :private, name: 'A', path: 'A')
+ end
+
+ let!(:internal_project) do
+ create(:project, :internal, group: group, name: 'B', path: 'B')
+ end
+
+ let!(:public_project) do
+ create(:project, :public, group: group, name: 'C', path: 'C')
+ end
let(:finder) { described_class.new }
@@ -38,8 +47,6 @@ describe ProjectsFinder do
end
describe 'with a group' do
- let(:group) { public_project.group }
-
describe 'without a user' do
subject { finder.execute(nil, group: group) }