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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-29 18:10:35 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-29 18:10:35 +0300
commit6407b5a4c13e34323d50ac3a39fda74e54d09306 (patch)
tree1461aebeda6e0b5359283a41381f780ab639f821 /spec/lib/sidebars
parent1a8b381312dc666a93c1bc3879ad15b1350de300 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/sidebars')
-rw-r--r--spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb10
-rw-r--r--spec/lib/sidebars/menu_spec.rb41
-rw-r--r--spec/lib/sidebars/projects/menus/repository_menu_spec.rb45
-rw-r--r--spec/lib/sidebars/projects/menus/snippets_menu_spec.rb3
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb29
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb12
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb28
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/manage_menu_spec.rb12
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb12
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb2
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb2
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_menus/secure_menu_spec.rb29
-rw-r--r--spec/lib/sidebars/projects/super_sidebar_panel_spec.rb11
13 files changed, 222 insertions, 14 deletions
diff --git a/spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb b/spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb
index f33cb4ab7f6..b1051c1387b 100644
--- a/spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb
+++ b/spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb
@@ -83,6 +83,16 @@ RSpec.describe Sidebars::Concerns::SuperSidebarPanel, feature_category: :navigat
expect(uncategorized_menu.renderable_items).to eq([])
end
+ it 'replaces placeholder Menu Items in the defined super_sidebar_parent' do
+ menu_foo.insert_item_before(:exists, nil_menu_item)
+ allow(menu_item).to receive(:item_id).and_return(:nil_item)
+
+ subject.transform_old_menus(current_menus, menu_bar)
+
+ expect(menu_foo.renderable_items).to eq([menu_item, existing_item])
+ expect(uncategorized_menu.renderable_items).to eq([])
+ end
+
it 'adds Menu Items to defined super_sidebar_parent, before super_sidebar_before' do
allow(menu_item).to receive(:super_sidebar_before).and_return(:exists)
subject.transform_old_menus(current_menus, menu_bar)
diff --git a/spec/lib/sidebars/menu_spec.rb b/spec/lib/sidebars/menu_spec.rb
index 7577eeb8478..74ed344dd24 100644
--- a/spec/lib/sidebars/menu_spec.rb
+++ b/spec/lib/sidebars/menu_spec.rb
@@ -238,6 +238,47 @@ RSpec.describe Sidebars::Menu, feature_category: :navigation do
end
end
+ describe '#replace_placeholder' do
+ let(:item1) { Sidebars::NilMenuItem.new(item_id: :foo1) }
+ let(:item2) { Sidebars::MenuItem.new(item_id: :foo2, title: 'foo2', link: 'foo2', active_routes: {}) }
+ let(:item3) { Sidebars::NilMenuItem.new(item_id: :foo3) }
+
+ subject { menu.instance_variable_get(:@items) }
+
+ before do
+ menu.add_item(item1)
+ menu.add_item(item2)
+ menu.add_item(item3)
+ end
+
+ context 'when a NilMenuItem reference element exists' do
+ it 'replaces the reference element with the provided item' do
+ item = Sidebars::MenuItem.new(item_id: :foo1, title: 'target', active_routes: {}, link: 'target')
+ menu.replace_placeholder(item)
+
+ expect(subject).to eq [item, item2, item3]
+ end
+ end
+
+ context 'when a MenuItem reference element exists' do
+ it 'does not replace the reference element and adds to the end of the list' do
+ item = Sidebars::MenuItem.new(item_id: :foo2, title: 'target', active_routes: {}, link: 'target')
+ menu.replace_placeholder(item)
+
+ expect(subject).to eq [item1, item2, item3, item]
+ end
+ end
+
+ context 'when reference element does not exist' do
+ it 'adds the element to the end of the list' do
+ item = Sidebars::MenuItem.new(item_id: :new_element, title: 'target', active_routes: {}, link: 'target')
+ menu.replace_placeholder(item)
+
+ expect(subject).to eq [item1, item2, item3, item]
+ end
+ end
+ end
+
describe '#remove_element' do
let(:item1) { Sidebars::MenuItem.new(title: 'foo1', link: 'foo1', active_routes: {}, item_id: :foo1) }
let(:item2) { Sidebars::MenuItem.new(title: 'foo2', link: 'foo2', active_routes: {}, item_id: :foo2) }
diff --git a/spec/lib/sidebars/projects/menus/repository_menu_spec.rb b/spec/lib/sidebars/projects/menus/repository_menu_spec.rb
index b0631aacdb9..1aa0ea30d0a 100644
--- a/spec/lib/sidebars/projects/menus/repository_menu_spec.rb
+++ b/spec/lib/sidebars/projects/menus/repository_menu_spec.rb
@@ -6,7 +6,11 @@ RSpec.describe Sidebars::Projects::Menus::RepositoryMenu, feature_category: :sou
let_it_be(:project) { create(:project, :repository) }
let(:user) { project.first_owner }
- let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project, current_ref: 'master') }
+ let(:is_super_sidebar) { false }
+ let(:context) do
+ Sidebars::Projects::Context.new(current_user: user, container: project, current_ref: 'master',
+ is_super_sidebar: is_super_sidebar)
+ end
subject { described_class.new(context) }
@@ -36,9 +40,8 @@ RSpec.describe Sidebars::Projects::Menus::RepositoryMenu, feature_category: :sou
end
context 'for menu items' do
- shared_examples_for 'repository menu item link for' do |item_id|
+ shared_examples_for 'repository menu item link for' do
let(:ref) { 'master' }
- let(:item_id) { item_id }
subject { described_class.new(context).renderable_items.find { |e| e.item_id == item_id }.link }
using RSpec::Parameterized::TableSyntax
@@ -77,10 +80,34 @@ RSpec.describe Sidebars::Projects::Menus::RepositoryMenu, feature_category: :sou
end
end
+ shared_examples_for 'repository menu item with different super sidebar title' do |title, super_sidebar_title|
+ subject { described_class.new(context).renderable_items.find { |e| e.item_id == item_id } }
+
+ specify do
+ expect(subject.title).to eq(title)
+ end
+
+ context 'when inside the super sidebar' do
+ let(:is_super_sidebar) { true }
+
+ specify do
+ expect(subject.title).to eq(super_sidebar_title)
+ end
+ end
+ end
+
+ describe 'Files' do
+ let_it_be(:item_id) { :files }
+
+ it_behaves_like 'repository menu item with different super sidebar title',
+ _('Files'),
+ _('Repository')
+ end
+
describe 'Commits' do
let_it_be(:item_id) { :commits }
- it_behaves_like 'repository menu item link for', :commits do
+ it_behaves_like 'repository menu item link for' do
let(:route) { "/#{project.full_path}/-/commits/#{ref}" }
end
end
@@ -103,16 +130,22 @@ RSpec.describe Sidebars::Projects::Menus::RepositoryMenu, feature_category: :sou
project.project_feature.update!(analytics_access_level: ProjectFeature::ENABLED)
end
- it_behaves_like 'repository menu item link for', :contributors do
+ it_behaves_like 'repository menu item link for' do
let(:route) { "/#{project.full_path}/-/graphs/#{ref}" }
end
end
end
describe 'Network' do
- it_behaves_like 'repository menu item link for', :graphs do
+ let_it_be(:item_id) { :graphs }
+
+ it_behaves_like 'repository menu item link for' do
let(:route) { "/#{project.full_path}/-/network/#{ref}" }
end
+
+ it_behaves_like 'repository menu item with different super sidebar title',
+ _('Graph'),
+ _('Repository graph')
end
end
end
diff --git a/spec/lib/sidebars/projects/menus/snippets_menu_spec.rb b/spec/lib/sidebars/projects/menus/snippets_menu_spec.rb
index c5fd407dae9..9d50eb6f817 100644
--- a/spec/lib/sidebars/projects/menus/snippets_menu_spec.rb
+++ b/spec/lib/sidebars/projects/menus/snippets_menu_spec.rb
@@ -13,8 +13,7 @@ RSpec.describe Sidebars::Projects::Menus::SnippetsMenu, feature_category: :navig
let(:menu) { subject }
let(:extra_attrs) do
{
- super_sidebar_parent: ::Sidebars::Projects::Menus::RepositoryMenu,
- super_sidebar_before: :contributors,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
item_id: :project_snippets
}
end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb
new file mode 100644
index 00000000000..b8d74665042
--- /dev/null
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu, feature_category: :navigation do
+ subject { described_class.new({}) }
+
+ let(:items) { subject.instance_variable_get(:@items) }
+
+ it 'has title and sprite_icon' do
+ expect(subject.title).to eq(s_("Navigation|Analyze"))
+ expect(subject.sprite_icon).to eq("chart")
+ end
+
+ it 'defines list of NilMenuItem placeholders' do
+ expect(items.map(&:class).uniq).to eq([Sidebars::NilMenuItem])
+ expect(items.map(&:item_id)).to eq([
+ :dashboards_analytics,
+ :cycle_analytics,
+ :contributors,
+ :ci_cd_analytics,
+ :repository_analytics,
+ :code_review,
+ :merge_requests,
+ :issues,
+ :insights
+ ])
+ end
+end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb
new file mode 100644
index 00000000000..96e54d358c5
--- /dev/null
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Sidebars::Projects::SuperSidebarMenus::BuildMenu, feature_category: :navigation do
+ subject { described_class.new({}) }
+
+ it 'has title and sprite_icon' do
+ expect(subject.title).to eq(s_("Navigation|Build"))
+ expect(subject.sprite_icon).to eq("rocket")
+ end
+end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb
new file mode 100644
index 00000000000..e307ff91234
--- /dev/null
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/code_menu_spec.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Sidebars::Projects::SuperSidebarMenus::CodeMenu, feature_category: :navigation do
+ subject { described_class.new({}) }
+
+ let(:items) { subject.instance_variable_get(:@items) }
+
+ it 'has title and sprite_icon' do
+ expect(subject.title).to eq(s_("Navigation|Code"))
+ expect(subject.sprite_icon).to eq("code")
+ end
+
+ it 'defines list of NilMenuItem placeholders' do
+ expect(items.map(&:class).uniq).to eq([Sidebars::NilMenuItem])
+ expect(items.map(&:item_id)).to eq([
+ :files,
+ :branches,
+ :commits,
+ :tags,
+ :graphs,
+ :compare,
+ :project_snippets,
+ :file_locks
+ ])
+ end
+end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/manage_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/manage_menu_spec.rb
new file mode 100644
index 00000000000..8c5f7aaaf36
--- /dev/null
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/manage_menu_spec.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Sidebars::Projects::SuperSidebarMenus::ManageMenu, feature_category: :navigation do
+ subject { described_class.new({}) }
+
+ it 'has title and sprite_icon' do
+ expect(subject.title).to eq(s_("Navigation|Manage"))
+ expect(subject.sprite_icon).to eq("users")
+ end
+end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb
new file mode 100644
index 00000000000..6398e20efd0
--- /dev/null
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Sidebars::Projects::SuperSidebarMenus::MonitorMenu, feature_category: :navigation do
+ subject { described_class.new({}) }
+
+ it 'has title and sprite_icon' do
+ expect(subject.title).to eq(s_("Navigation|Monitor"))
+ expect(subject.sprite_icon).to eq("monitor")
+ end
+end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb
index df3f7e6cdab..54d4dcce264 100644
--- a/spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/operations_menu_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Sidebars::Projects::SuperSidebarMenus::OperationsMenu, feature_ca
subject { described_class.new({}) }
it 'has title and sprite_icon' do
- expect(subject.title).to eq(_("Operations"))
+ expect(subject.title).to eq(s_("Navigation|Operate"))
expect(subject.sprite_icon).to eq("deployments")
end
end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb
index 3917d26f6f2..5f6f6e4f6c2 100644
--- a/spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Sidebars::Projects::SuperSidebarMenus::PlanMenu, feature_category
subject { described_class.new({}) }
it 'has title and sprite_icon' do
- expect(subject.title).to eq(_("Plan"))
+ expect(subject.title).to eq(s_("Navigation|Plan"))
expect(subject.sprite_icon).to eq("planning")
end
end
diff --git a/spec/lib/sidebars/projects/super_sidebar_menus/secure_menu_spec.rb b/spec/lib/sidebars/projects/super_sidebar_menus/secure_menu_spec.rb
new file mode 100644
index 00000000000..b68b33941c3
--- /dev/null
+++ b/spec/lib/sidebars/projects/super_sidebar_menus/secure_menu_spec.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Sidebars::Projects::SuperSidebarMenus::SecureMenu, feature_category: :navigation do
+ subject { described_class.new({}) }
+
+ let(:items) { subject.instance_variable_get(:@items) }
+
+ it 'has title and sprite_icon' do
+ expect(subject.title).to eq(s_("Navigation|Secure"))
+ expect(subject.sprite_icon).to eq("shield")
+ end
+
+ it 'defines list of NilMenuItem placeholders' do
+ expect(items.map(&:class).uniq).to eq([Sidebars::NilMenuItem])
+ expect(items.map(&:item_id)).to eq([
+ :discover_project_security,
+ :audit_events,
+ :dashboard,
+ :vulnerability_report,
+ :on_demand_scans,
+ :scan_policies,
+ :dependency_list,
+ :license_compliance,
+ :configuration
+ ])
+ end
+end
diff --git a/spec/lib/sidebars/projects/super_sidebar_panel_spec.rb b/spec/lib/sidebars/projects/super_sidebar_panel_spec.rb
index d6fc3fd8fe1..30a3612b3aa 100644
--- a/spec/lib/sidebars/projects/super_sidebar_panel_spec.rb
+++ b/spec/lib/sidebars/projects/super_sidebar_panel_spec.rb
@@ -26,13 +26,16 @@ RSpec.describe Sidebars::Projects::SuperSidebarPanel, feature_category: :navigat
let(:category_menu) do
[
Sidebars::StaticMenu,
+ Sidebars::Projects::SuperSidebarMenus::ManageMenu,
Sidebars::Projects::SuperSidebarMenus::PlanMenu,
- Sidebars::Projects::Menus::RepositoryMenu,
- Sidebars::Projects::Menus::CiCdMenu,
- Sidebars::Projects::Menus::SecurityComplianceMenu,
+ Sidebars::Projects::SuperSidebarMenus::CodeMenu,
+ Sidebars::Projects::SuperSidebarMenus::BuildMenu,
+ Sidebars::Projects::SuperSidebarMenus::SecureMenu,
Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
+ Sidebars::Projects::SuperSidebarMenus::MonitorMenu,
+ Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
+ Sidebars::Projects::Menus::CiCdMenu,
Sidebars::Projects::Menus::MonitorMenu,
- Sidebars::Projects::Menus::AnalyticsMenu,
Sidebars::UncategorizedMenu,
Sidebars::Projects::Menus::SettingsMenu
]