diff options
Diffstat (limited to 'spec/lib/sidebars')
10 files changed, 126 insertions, 6 deletions
diff --git a/spec/lib/sidebars/menu_spec.rb b/spec/lib/sidebars/menu_spec.rb index 7dcf1940442..95009aa063f 100644 --- a/spec/lib/sidebars/menu_spec.rb +++ b/spec/lib/sidebars/menu_spec.rb @@ -144,4 +144,50 @@ RSpec.describe Sidebars::Menu do end end end + + describe '#container_html_options' do + before do + allow(menu).to receive(:title).and_return('Foo Menu') + end + + context 'when menu can be rendered' do + before do + allow(menu).to receive(:render?).and_return(true) + end + + context 'when menu has renderable items' do + before do + menu.add_item(Sidebars::MenuItem.new(title: 'foo1', link: 'foo1', active_routes: { path: 'bar' })) + end + + it 'contains the special class' do + expect(menu.container_html_options[:class]).to eq 'has-sub-items' + end + + context 'when menu already has other classes' do + it 'appends special class' do + allow(menu).to receive(:extra_container_html_options).and_return(class: 'foo') + + expect(menu.container_html_options[:class]).to eq 'foo has-sub-items' + end + end + end + + context 'when menu does not have renderable items' do + it 'does not contain the special class' do + expect(menu.container_html_options[:class]).to be_nil + end + end + end + + context 'when menu cannot be rendered' do + before do + allow(menu).to receive(:render?).and_return(false) + end + + it 'does not contain special class' do + expect(menu.container_html_options[:class]).to be_nil + end + end + end end diff --git a/spec/lib/sidebars/projects/menus/confluence_menu_spec.rb b/spec/lib/sidebars/projects/menus/confluence_menu_spec.rb index 0ecb328efd1..e3ae3add4fd 100644 --- a/spec/lib/sidebars/projects/menus/confluence_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/confluence_menu_spec.rb @@ -18,7 +18,7 @@ RSpec.describe Sidebars::Projects::Menus::ConfluenceMenu do end context 'when Confluence integration is present' do - let!(:confluence) { create(:confluence_service, project: project, active: active) } + let!(:confluence) { create(:confluence_integration, project: project, active: active) } context 'when integration is disabled' do let(:active) { false } diff --git a/spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb b/spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb index 5d62eebca1c..0585eb2254c 100644 --- a/spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/external_issue_tracker_menu_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Sidebars::Projects::Menus::ExternalIssueTrackerMenu do end context 'when active external issue tracker' do - let(:external_issue_tracker) { build(:custom_issue_tracker_service, project: project) } + let(:external_issue_tracker) { build(:custom_issue_tracker_integration, project: project) } context 'is present' do it 'returns true' 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 ef5ae550551..231e5a850c2 100644 --- a/spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/learn_gitlab_menu_spec.rb @@ -27,7 +27,6 @@ RSpec.describe Sidebars::Projects::Menus::LearnGitlabMenu do { class: 'home', data: { - track_action: 'click_menu', track_property: tracking_category, track_label: 'learn_gitlab' } 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 731dd5eca23..cc4760e69e5 100644 --- a/spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' RSpec.describe Sidebars::Projects::Menus::PackagesRegistriesMenu do - let(:project) { build(:project) } + let_it_be(:project) { create(:project) } + let(:user) { project.owner } let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) } diff --git a/spec/lib/sidebars/projects/menus/project_information_menu_spec.rb b/spec/lib/sidebars/projects/menus/project_information_menu_spec.rb index b50bf0f4bf1..748796bc7ee 100644 --- a/spec/lib/sidebars/projects/menus/project_information_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/project_information_menu_spec.rb @@ -8,6 +8,20 @@ RSpec.describe Sidebars::Projects::Menus::ProjectInformationMenu do let(:user) { project.owner } let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) } + describe '#container_html_options' do + subject { described_class.new(context).container_html_options } + + specify { is_expected.to match(hash_including(class: 'shortcuts-project-information has-sub-items')) } + + context 'when feature flag :sidebar_refactor is disabled' do + before do + stub_feature_flags(sidebar_refactor: false) + end + + specify { is_expected.to match(hash_including(class: 'shortcuts-project rspec-project-link has-sub-items')) } + end + end + describe 'Menu Items' do subject { described_class.new(context).renderable_items.index { |e| e.item_id == item_id } } diff --git a/spec/lib/sidebars/projects/menus/scope_menu_spec.rb b/spec/lib/sidebars/projects/menus/scope_menu_spec.rb new file mode 100644 index 00000000000..f84d458a2e1 --- /dev/null +++ b/spec/lib/sidebars/projects/menus/scope_menu_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Sidebars::Projects::Menus::ScopeMenu do + let(:project) { build(:project) } + let(:user) { project.owner } + let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) } + + describe '#container_html_options' do + subject { described_class.new(context).container_html_options } + + specify { is_expected.to match(hash_including(class: 'shortcuts-project rspec-project-link')) } + + context 'when feature flag :sidebar_refactor is disabled' do + before do + stub_feature_flags(sidebar_refactor: false) + end + + specify { is_expected.to eq(aria: { label: project.name }) } + end + end +end diff --git a/spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb b/spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb new file mode 100644 index 00000000000..6e84beeb274 --- /dev/null +++ b/spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Sidebars::Projects::Menus::SecurityComplianceMenu do + let_it_be(:project) { create(:project) } + + let(:user) { project.owner } + let(:show_promotions) { true } + let(:show_discover_project_security) { true } + let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project, show_promotions: show_promotions, show_discover_project_security: show_discover_project_security) } + + describe 'render?' do + subject { described_class.new(context).render? } + + context 'when user is not authenticated' do + let(:user) { nil } + + it { is_expected.to be_falsey } + end + + context 'when user is authenticated' do + context 'when the Security & Compliance is disabled' do + before do + allow(Ability).to receive(:allowed?).with(user, :access_security_and_compliance, project).and_return(false) + end + + it { is_expected.to be_falsey } + end + + context 'when the Security & Compliance is not disabled' do + it { is_expected.to be_truthy } + end + end + end +end diff --git a/spec/lib/sidebars/projects/menus/settings_menu_spec.rb b/spec/lib/sidebars/projects/menus/settings_menu_spec.rb index 88f2df6cd84..6817f0e6ed6 100644 --- a/spec/lib/sidebars/projects/menus/settings_menu_spec.rb +++ b/spec/lib/sidebars/projects/menus/settings_menu_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' RSpec.describe Sidebars::Projects::Menus::SettingsMenu do - let(:project) { build(:project) } + let_it_be(:project) { create(:project) } + let(:user) { project.owner } let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) } diff --git a/spec/lib/sidebars/projects/panel_spec.rb b/spec/lib/sidebars/projects/panel_spec.rb index 51d37bf69ea..2e79ced7039 100644 --- a/spec/lib/sidebars/projects/panel_spec.rb +++ b/spec/lib/sidebars/projects/panel_spec.rb @@ -16,7 +16,7 @@ RSpec.describe Sidebars::Projects::Panel do subject { described_class.new(context).instance_variable_get(:@menus) } context 'when integration is present and active' do - let_it_be(:confluence) { create(:confluence_service, active: true) } + let_it_be(:confluence) { create(:confluence_integration, active: true) } let(:project) { confluence.project } |