summaryrefslogtreecommitdiff
path: root/spec/models/namespace_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/namespace_spec.rb')
-rw-r--r--spec/models/namespace_spec.rb96
1 files changed, 41 insertions, 55 deletions
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
index 56afe49e15f..2c514593de8 100644
--- a/spec/models/namespace_spec.rb
+++ b/spec/models/namespace_spec.rb
@@ -5,6 +5,7 @@ require 'spec_helper'
RSpec.describe Namespace do
include ProjectForksHelper
include GitHelpers
+ include ReloadHelpers
let!(:namespace) { create(:namespace, :with_namespace_settings) }
let(:gitlab_shell) { Gitlab::Shell.new }
@@ -199,6 +200,8 @@ RSpec.describe Namespace do
it { is_expected.to include_module(Namespaces::Traversal::Linear) }
end
+ it_behaves_like 'linear namespace traversal'
+
context 'traversal_ids on create' do
context 'default traversal_ids' do
let(:namespace) { build(:namespace) }
@@ -804,9 +807,9 @@ RSpec.describe Namespace do
end
it 'updates the project storage location' do
- repository_project_in_parent_group = create(:project_repository, project: project_in_parent_group)
- repository_hashed_project_in_subgroup = create(:project_repository, project: hashed_project_in_subgroup)
- repository_legacy_project_in_subgroup = create(:project_repository, project: legacy_project_in_subgroup)
+ repository_project_in_parent_group = project_in_parent_group.project_repository
+ repository_hashed_project_in_subgroup = hashed_project_in_subgroup.project_repository
+ repository_legacy_project_in_subgroup = legacy_project_in_subgroup.project_repository
parent.update(path: 'mygroup_moved')
@@ -1010,47 +1013,52 @@ RSpec.describe Namespace do
end
end
- describe '#all_projects' do
+ shared_examples '#all_projects' do
context 'when namespace is a group' do
- let(:namespace) { create(:group) }
- let(:child) { create(:group, parent: namespace) }
- let!(:project1) { create(:project_empty_repo, namespace: namespace) }
- let!(:project2) { create(:project_empty_repo, namespace: child) }
+ let_it_be(:namespace) { create(:group) }
+ let_it_be(:child) { create(:group, parent: namespace) }
+ let_it_be(:project1) { create(:project_empty_repo, namespace: namespace) }
+ let_it_be(:project2) { create(:project_empty_repo, namespace: child) }
+ let_it_be(:other_project) { create(:project_empty_repo) }
+
+ before do
+ reload_models(namespace, child)
+ end
it { expect(namespace.all_projects.to_a).to match_array([project2, project1]) }
it { expect(child.all_projects.to_a).to match_array([project2]) }
-
- it 'queries for the namespace and its descendants' do
- expect(Project).to receive(:where).with(namespace: [namespace, child])
-
- namespace.all_projects
- end
end
context 'when namespace is a user namespace' do
let_it_be(:user) { create(:user) }
let_it_be(:user_namespace) { create(:namespace, owner: user) }
let_it_be(:project) { create(:project, namespace: user_namespace) }
+ let_it_be(:other_project) { create(:project_empty_repo) }
- it { expect(user_namespace.all_projects.to_a).to match_array([project]) }
+ before do
+ reload_models(user_namespace)
+ end
- it 'only queries for the namespace itself' do
- expect(Project).to receive(:where).with(namespace: user_namespace)
+ it { expect(user_namespace.all_projects.to_a).to match_array([project]) }
+ end
+ end
- user_namespace.all_projects
+ describe '#all_projects' do
+ context 'with use_traversal_ids feature flag enabled' do
+ before do
+ stub_feature_flags(use_traversal_ids: true)
end
+
+ include_examples '#all_projects'
end
- end
- describe '#all_pipelines' do
- let(:group) { create(:group) }
- let(:child) { create(:group, parent: group) }
- let!(:project1) { create(:project_empty_repo, namespace: group) }
- let!(:project2) { create(:project_empty_repo, namespace: child) }
- let!(:pipeline1) { create(:ci_empty_pipeline, project: project1) }
- let!(:pipeline2) { create(:ci_empty_pipeline, project: project2) }
+ context 'with use_traversal_ids feature flag disabled' do
+ before do
+ stub_feature_flags(use_traversal_ids: false)
+ end
- it { expect(group.all_pipelines.to_a).to match_array([pipeline1, pipeline2]) }
+ include_examples '#all_projects'
+ end
end
describe '#share_with_group_lock with subgroups' do
@@ -1379,36 +1387,14 @@ RSpec.describe Namespace do
describe '#pages_virtual_domain' do
let(:project) { create(:project, namespace: namespace) }
- context 'when there are pages deployed for the project' do
- context 'but pages metadata is not migrated' do
- before do
- generic_commit_status = create(:generic_commit_status, :success, stage: 'deploy', name: 'pages:deploy')
- generic_commit_status.update!(project: project)
- project.pages_metadatum.destroy!
- end
-
- it 'migrates pages metadata and returns the virual domain' do
- virtual_domain = namespace.pages_virtual_domain
+ it 'returns the virual domain' do
+ project.mark_pages_as_deployed
+ project.update_pages_deployment!(create(:pages_deployment, project: project))
- expect(project.reload.pages_metadatum.deployed).to eq(true)
+ virtual_domain = namespace.pages_virtual_domain
- expect(virtual_domain).to be_an_instance_of(Pages::VirtualDomain)
- expect(virtual_domain.lookup_paths).not_to be_empty
- end
- end
-
- context 'and pages metadata is migrated' do
- before do
- project.mark_pages_as_deployed
- end
-
- it 'returns the virual domain' do
- virtual_domain = namespace.pages_virtual_domain
-
- expect(virtual_domain).to be_an_instance_of(Pages::VirtualDomain)
- expect(virtual_domain.lookup_paths).not_to be_empty
- end
- end
+ expect(virtual_domain).to be_an_instance_of(Pages::VirtualDomain)
+ expect(virtual_domain.lookup_paths).not_to be_empty
end
end