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:
Diffstat (limited to 'spec/finders/group_projects_finder_spec.rb')
-rw-r--r--spec/finders/group_projects_finder_spec.rb92
1 files changed, 90 insertions, 2 deletions
diff --git a/spec/finders/group_projects_finder_spec.rb b/spec/finders/group_projects_finder_spec.rb
index 3fc4393df5d..4189be94cc1 100644
--- a/spec/finders/group_projects_finder_spec.rb
+++ b/spec/finders/group_projects_finder_spec.rb
@@ -9,13 +9,29 @@ RSpec.describe GroupProjectsFinder do
describe 'with a group member current user' do
before do
- group.add_maintainer(current_user)
+ root_group.add_maintainer(current_user)
end
context "only shared" do
let(:options) { { only_shared: true } }
it { is_expected.to match_array([shared_project_3, shared_project_2, shared_project_1]) }
+
+ context 'with ancestor groups projects' do
+ before do
+ options[:include_ancestor_groups] = true
+ end
+
+ it { is_expected.to match_array([shared_project_3, shared_project_2, shared_project_1]) }
+ end
+
+ context 'with subgroups projects' do
+ before do
+ options[:include_subgroups] = true
+ end
+
+ it { is_expected.to match_array([shared_project_3, shared_project_2, shared_project_1]) }
+ end
end
context "only owned" do
@@ -29,9 +45,46 @@ RSpec.describe GroupProjectsFinder do
it { is_expected.to match_array([private_project, public_project, subgroup_project, subgroup_private_project]) }
end
- context 'without subgroups projects' do
+ context 'with ancestor group projects' do
+ before do
+ options[:include_ancestor_groups] = true
+ end
+
+ it { is_expected.to match_array([private_project, public_project, root_group_public_project, root_group_private_project, root_group_private_project_2]) }
+ end
+
+ context 'with ancestor groups and subgroups projects' do
+ before do
+ options[:include_ancestor_groups] = true
+ options[:include_subgroups] = true
+ end
+
+ it { is_expected.to match_array([private_project, public_project, root_group_public_project, root_group_private_project, root_group_private_project_2, subgroup_private_project, subgroup_project]) }
+ end
+
+ context 'without subgroups and ancestor group projects' do
it { is_expected.to match_array([private_project, public_project]) }
end
+
+ context 'when user is member only of a subgroup' do
+ let(:subgroup_member) { create(:user) }
+
+ context 'with ancestor groups and subgroups projects' do
+ before do
+ group.add_maintainer(subgroup_member)
+ options[:include_ancestor_groups] = true
+ options[:include_subgroups] = true
+ end
+
+ it 'does not return parent group projects' do
+ finder = described_class.new(group: group, current_user: subgroup_member, params: params, options: options)
+
+ projects = finder.execute
+
+ expect(projects).to match_array([private_project, public_project, subgroup_project, subgroup_private_project, root_group_public_project])
+ end
+ end
+ end
end
context "all" do
@@ -90,6 +143,7 @@ RSpec.describe GroupProjectsFinder do
before do
private_project.add_maintainer(current_user)
subgroup_private_project.add_maintainer(current_user)
+ root_group_private_project.add_maintainer(current_user)
end
context 'with subgroups projects' do
@@ -100,6 +154,23 @@ RSpec.describe GroupProjectsFinder do
it { is_expected.to match_array([private_project, public_project, subgroup_project, subgroup_private_project]) }
end
+ context 'with ancestor groups projects' do
+ before do
+ options[:include_ancestor_groups] = true
+ end
+
+ it { is_expected.to match_array([private_project, public_project, root_group_public_project, root_group_private_project]) }
+ end
+
+ context 'with ancestor groups and subgroups projects' do
+ before do
+ options[:include_ancestor_groups] = true
+ options[:include_subgroups] = true
+ end
+
+ it { is_expected.to match_array([private_project, public_project, root_group_private_project, root_group_public_project, subgroup_private_project, subgroup_project]) }
+ end
+
context 'without subgroups projects' do
it { is_expected.to match_array([private_project, public_project]) }
end
@@ -118,6 +189,23 @@ RSpec.describe GroupProjectsFinder do
it { is_expected.to match_array([public_project, subgroup_project]) }
end
+ context 'with ancestor groups projects' do
+ before do
+ options[:include_ancestor_groups] = true
+ end
+
+ it { is_expected.to match_array([public_project, root_group_public_project]) }
+ end
+
+ context 'with ancestor groups and subgroups projects' do
+ before do
+ options[:include_subgroups] = true
+ options[:include_ancestor_groups] = true
+ end
+
+ it { is_expected.to match_array([public_project, root_group_public_project, subgroup_project]) }
+ end
+
context 'without subgroups projects' do
it { is_expected.to eq([public_project]) }
end