diff options
Diffstat (limited to 'spec/models/namespace_spec.rb')
-rw-r--r-- | spec/models/namespace_spec.rb | 96 |
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 |