diff options
Diffstat (limited to 'spec/lib/sidebars')
11 files changed, 131 insertions, 17 deletions
diff --git a/spec/lib/sidebars/concerns/container_with_html_options_spec.rb b/spec/lib/sidebars/concerns/container_with_html_options_spec.rb index 7f834419866..d95cdb9e0fe 100644 --- a/spec/lib/sidebars/concerns/container_with_html_options_spec.rb +++ b/spec/lib/sidebars/concerns/container_with_html_options_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'spec_helper' +require 'fast_spec_helper' RSpec.describe Sidebars::Concerns::ContainerWithHtmlOptions do subject do diff --git a/spec/lib/sidebars/concerns/link_with_html_options_spec.rb b/spec/lib/sidebars/concerns/link_with_html_options_spec.rb index 1e890bffad1..f7e6701c37d 100644 --- a/spec/lib/sidebars/concerns/link_with_html_options_spec.rb +++ b/spec/lib/sidebars/concerns/link_with_html_options_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'spec_helper' +require 'fast_spec_helper' RSpec.describe Sidebars::Concerns::LinkWithHtmlOptions do let(:options) { {} } diff --git a/spec/lib/sidebars/groups/menus/observability_menu_spec.rb b/spec/lib/sidebars/groups/menus/observability_menu_spec.rb new file mode 100644 index 00000000000..3a91b1aea2f --- /dev/null +++ b/spec/lib/sidebars/groups/menus/observability_menu_spec.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Sidebars::Groups::Menus::ObservabilityMenu do + let_it_be(:owner) { create(:user) } + let_it_be(:root_group) do + build(:group, :private).tap do |g| + g.add_owner(owner) + end + end + + let(:group) { root_group } + let(:user) { owner } + let(:context) { Sidebars::Groups::Context.new(current_user: user, container: group) } + let(:menu) { described_class.new(context) } + + describe '#render?' do + before do + allow(menu).to receive(:can?).and_call_original + end + + context 'when user can :read_observability' do + before do + allow(menu).to receive(:can?).with(user, :read_observability, group).and_return(true) + end + + it 'returns true' do + expect(menu.render?).to eq true + end + end + + context 'when user cannot :read_observability' do + before do + allow(menu).to receive(:can?).with(user, :read_observability, group).and_return(false) + end + + it 'returns false' do + expect(menu.render?).to eq false + end + end + end +end diff --git a/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb b/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb index d3cb18222b5..c5666724acf 100644 --- a/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb +++ b/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb @@ -10,6 +10,8 @@ RSpec.describe Sidebars::Groups::Menus::PackagesRegistriesMenu do end end + let_it_be(:harbor_integration) { create(:harbor_integration, group: group, project: nil) } + let(:user) { owner } let(:context) { Sidebars::Groups::Context.new(current_user: user, container: group) } let(:menu) { described_class.new(context) } diff --git a/spec/lib/sidebars/groups/menus/settings_menu_spec.rb b/spec/lib/sidebars/groups/menus/settings_menu_spec.rb index 252da8ea699..4e3c639672b 100644 --- a/spec/lib/sidebars/groups/menus/settings_menu_spec.rb +++ b/spec/lib/sidebars/groups/menus/settings_menu_spec.rb @@ -80,7 +80,7 @@ RSpec.describe Sidebars::Groups::Menus::SettingsMenu do it_behaves_like 'access rights checks' end - describe 'Packages & Registries' do + describe 'Packages and registries' do let(:item_id) { :packages_and_registries } before do diff --git a/spec/lib/sidebars/menu_item_spec.rb b/spec/lib/sidebars/menu_item_spec.rb index 3adde64f550..15804f51934 100644 --- a/spec/lib/sidebars/menu_item_spec.rb +++ b/spec/lib/sidebars/menu_item_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'spec_helper' +require 'fast_spec_helper' RSpec.describe Sidebars::MenuItem do let(:title) { 'foo' } diff --git a/spec/lib/sidebars/projects/menus/deployments_menu_spec.rb b/spec/lib/sidebars/projects/menus/deployments_menu_spec.rb index 56eb082e101..90ff04a2064 100644 --- a/spec/lib/sidebars/projects/menus/deployments_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/deployments_menu_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe Sidebars::Projects::Menus::DeploymentsMenu do - let_it_be(:project) { create(:project, :repository) } + let_it_be(:project, reload: true) { create(:project, :repository) } let(:user) { project.first_owner } let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) } @@ -37,6 +37,40 @@ RSpec.describe Sidebars::Projects::Menus::DeploymentsMenu do specify { is_expected.to be_nil } end + + describe 'when the feature is disabled' do + before do + project.update_attribute("#{item_id}_access_level", 'disabled') + end + + it { is_expected.to be_nil } + end + + describe 'when split_operations_visibility_permissions FF is disabled' do + before do + stub_feature_flags(split_operations_visibility_permissions: false) + end + + it { is_expected.not_to be_nil } + + context 'and the feature is disabled' do + before do + project.update_attribute("#{item_id}_access_level", 'disabled') + end + + it { is_expected.not_to be_nil } + end + + context 'and operations is disabled' do + before do + project.update_attribute(:operations_access_level, 'disabled') + end + + it do + is_expected.to be_nil if [:environments, :feature_flags].include?(item_id) + end + end + end end describe 'Feature Flags' do diff --git a/spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb b/spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb index 36a76e70a48..4ae29f28f3a 100644 --- a/spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb @@ -68,13 +68,11 @@ RSpec.describe Sidebars::Projects::Menus::LearnGitlabMenu do end describe '#pill_count' do - before do - expect_next_instance_of(LearnGitlab::Onboarding) do |onboarding| - expect(onboarding).to receive(:completed_percentage).and_return(20) + it 'returns pill count' do + expect_next_instance_of(Onboarding::Completion) do |onboarding| + expect(onboarding).to receive(:percentage).and_return(20) end - end - it 'returns pill count' do expect(subject.pill_count).to eq '20%' end end diff --git a/spec/lib/sidebars/projects/menus/monitor_menu_spec.rb b/spec/lib/sidebars/projects/menus/monitor_menu_spec.rb index ba5137e2b92..bd0904b9db2 100644 --- a/spec/lib/sidebars/projects/menus/monitor_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/monitor_menu_spec.rb @@ -12,11 +12,28 @@ RSpec.describe Sidebars::Projects::Menus::MonitorMenu do subject { described_class.new(context) } describe '#render?' do - context 'when operations feature is disabled' do - it 'returns false' do - project.project_feature.update!(operations_access_level: Featurable::DISABLED) + using RSpec::Parameterized::TableSyntax + let(:enabled) { Featurable::PRIVATE } + let(:disabled) { Featurable::DISABLED } + + where(:flag_enabled, :operations_access_level, :monitor_level, :render) do + true | ref(:disabled) | ref(:enabled) | true + true | ref(:disabled) | ref(:disabled) | false + true | ref(:enabled) | ref(:enabled) | true + true | ref(:enabled) | ref(:disabled) | false + false | ref(:disabled) | ref(:enabled) | false + false | ref(:disabled) | ref(:disabled) | false + false | ref(:enabled) | ref(:enabled) | true + false | ref(:enabled) | ref(:disabled) | true + end + + with_them do + it 'renders when expected to' do + stub_feature_flags(split_operations_visibility_permissions: flag_enabled) + project.project_feature.update!(operations_access_level: operations_access_level) + project.project_feature.update!(monitor_access_level: monitor_level) - expect(subject.render?).to be false + expect(subject.render?).to be render end end diff --git a/spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb b/spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb index 9b78fc807bf..6491ef823e9 100644 --- a/spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb @@ -5,6 +5,8 @@ require 'spec_helper' RSpec.describe Sidebars::Projects::Menus::PackagesRegistriesMenu do let_it_be(:project) { create(:project) } + let_it_be(:harbor_integration) { create(:harbor_integration, project: project) } + let(:user) { project.first_owner } let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) } @@ -65,7 +67,7 @@ RSpec.describe Sidebars::Projects::Menus::PackagesRegistriesMenu do describe 'Packages Registry' do let(:item_id) { :packages_registry } - context 'when user can read packages' do + shared_examples 'when user can read packages' do context 'when config package setting is disabled' do it 'the menu item is not added to list of menu items' do stub_config(packages: { enabled: false }) @@ -83,13 +85,25 @@ RSpec.describe Sidebars::Projects::Menus::PackagesRegistriesMenu do end end - context 'when user cannot read packages' do + shared_examples 'when user cannot read packages' do let(:user) { nil } it 'the menu item is not added to list of menu items' do is_expected.to be_nil end end + + it_behaves_like 'when user can read packages' + it_behaves_like 'when user cannot read packages' + + context 'with feature flag disabled' do + before do + stub_feature_flags(read_package_policy_rule: false) + end + + it_behaves_like 'when user can read packages' + it_behaves_like 'when user cannot read packages' + end end describe 'Container Registry' do diff --git a/spec/lib/sidebars/projects/menus/settings_menu_spec.rb b/spec/lib/sidebars/projects/menus/settings_menu_spec.rb index f41f7a01d88..0733e0c6521 100644 --- a/spec/lib/sidebars/projects/menus/settings_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/settings_menu_spec.rb @@ -133,7 +133,13 @@ RSpec.describe Sidebars::Projects::Menus::SettingsMenu do end end - describe 'Packages & Registries' do + describe 'Merge requests' do + let(:item_id) { :merge_requests } + + it_behaves_like 'access rights checks' + end + + describe 'Packages and registries' do let(:item_id) { :packages_and_registries } let(:packages_enabled) { false } |