Commit 5d17a264 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '199436-test-additional-navbar-items' into 'master'

Add more navbar structure test cases

Closes #199436

See merge request gitlab-org/gitlab!26976
parents 4404fa9f bdf8c41f
# frozen_string_literal: true
require 'spec_helper'
describe 'Group navbar' do
include NavbarStructureHelper
include_context 'group navbar structure'
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
before do
group.add_maintainer(user)
sign_in(user)
end
context 'when productivity analytics is available' do
before do
stub_licensed_features(productivity_analytics: true)
insert_after_sub_nav_item(
_('Contribution'),
within: _('Analytics'),
new_sub_nav_item_name: _('Productivity')
)
visit group_path(group)
end
it_behaves_like 'verified navigation bar'
end
context 'when value stream analytics is available' do
before do
stub_licensed_features(cycle_analytics_for_groups: true)
insert_after_sub_nav_item(
_('Contribution'),
within: _('Analytics'),
new_sub_nav_item_name: _('Value Stream')
)
visit group_path(group)
end
it_behaves_like 'verified navigation bar'
end
context 'when epics are available' do
before do
stub_licensed_features(epics: true)
insert_after_nav_item(
_('Group overview'),
new_nav_item: {
nav_item: _('Epics'),
nav_sub_items: [
_('List'),
_('Roadmap')
]
}
)
visit group_path(group)
end
it_behaves_like 'verified navigation bar'
end
context 'when the logged in user is the owner' do
before do
group.add_owner(user)
insert_after_nav_item(_('Members'), new_nav_item: settings_nav_item)
visit group_path(group)
end
it_behaves_like 'verified navigation bar'
end
context 'when security dashboard is available' do
before do
group.add_owner(user)
stub_licensed_features(security_dashboard: true, group_level_compliance_dashboard: true)
insert_after_nav_item(
_('Merge Requests'),
new_nav_item: {
nav_item: _('Security & Compliance'),
nav_sub_items: [
_('Security'),
_('Compliance')
]
}
)
insert_after_nav_item(_('Members'), new_nav_item: settings_nav_item)
visit group_path(group)
end
it_behaves_like 'verified navigation bar'
end
end
# frozen_string_literal: true
require 'spec_helper'
describe 'Project navbar' do
include NavbarStructureHelper
include_context 'project navbar structure'
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :repository) }
before do
project.add_maintainer(user)
sign_in(user)
end
context 'when issues analytics is available' do
before do
stub_licensed_features(issues_analytics: true)
insert_after_sub_nav_item(
_('Code Review'),
within: _('Analytics'),
new_sub_nav_item_name: _('Issues')
)
visit project_path(project)
end
it_behaves_like 'verified navigation bar'
end
context 'when service desk is available' do
before do
stub_licensed_features(service_desk: true)
insert_after_sub_nav_item(
_('Labels'),
within: _('Issues'),
new_sub_nav_item_name: _('Service Desk')
)
visit project_path(project)
end
it_behaves_like 'verified navigation bar'
end
context 'when security dashboard is available' do
before do
stub_licensed_features(security_dashboard: true)
insert_after_nav_item(
_('CI / CD'),
new_nav_item: {
nav_item: _('Security & Compliance'),
nav_sub_items: [
_('Security Dashboard'),
_('Vulnerability List'),
_('Configuration')
]
}
)
visit project_path(project)
end
it_behaves_like 'verified navigation bar'
end
context 'when packages are available' do
before do
allow(Gitlab.config.packages).to receive(:enabled).and_return(true)
stub_licensed_features(packages: true)
insert_after_nav_item(
_('Operations'),
new_nav_item: {
nav_item: _('Packages'),
nav_sub_items: [
_('List')
]
}
)
visit project_path(project)
end
it_behaves_like 'verified navigation bar'
end
context 'when requirements is available' do
before do
stub_licensed_features(requirements: true)
visit project_path(project)
end
it_behaves_like 'verified navigation bar'
end
end
...@@ -3,90 +3,21 @@ ...@@ -3,90 +3,21 @@
require 'spec_helper' require 'spec_helper'
describe 'Group navbar' do describe 'Group navbar' do
let(:user) { create(:user) } include NavbarStructureHelper
let(:group) { create(:group) }
let(:analytics_nav_item) do include_context 'group navbar structure'
{
nav_item: _('Analytics'),
nav_sub_items: [
_('Contribution')
]
}
end
let(:structure) do let_it_be(:user) { create(:user) }
[ let_it_be(:group) { create(:group) }
{
nav_item: _('Group overview'),
nav_sub_items: [
_('Details'),
_('Activity')
]
},
{
nav_item: _('Issues'),
nav_sub_items: [
_('List'),
_('Board'),
_('Labels'),
_('Milestones')
]
},
{
nav_item: _('Merge Requests'),
nav_sub_items: []
},
{
nav_item: _('Kubernetes'),
nav_sub_items: []
},
(analytics_nav_item if Gitlab.ee?),
{
nav_item: _('Members'),
nav_sub_items: []
}
]
end
it_behaves_like 'verified navigation bar' do
before do before do
group.add_maintainer(user) group.add_maintainer(user)
sign_in(user) sign_in(user)
visit group_path(group)
end
end end
if Gitlab.ee? it_behaves_like 'verified navigation bar' do
context 'when productivity analytics is available' do
before do
stub_licensed_features(productivity_analytics: true)
analytics_nav_item[:nav_sub_items] << _('Productivity')
group.add_maintainer(user)
sign_in(user)
visit group_path(group)
end
it_behaves_like 'verified navigation bar'
end
context 'when value stream analytics is available' do
before do before do
stub_licensed_features(cycle_analytics_for_groups: true)
analytics_nav_item[:nav_sub_items] << _('Value Stream')
group.add_maintainer(user)
sign_in(user)
visit group_path(group) visit group_path(group)
end end
it_behaves_like 'verified navigation bar'
end
end end
end end
...@@ -3,112 +3,14 @@ ...@@ -3,112 +3,14 @@
require 'spec_helper' require 'spec_helper'
describe 'Project navbar' do describe 'Project navbar' do
let(:user) { create(:user) } include NavbarStructureHelper
let(:project) { create(:project, :repository) }
let(:analytics_nav_item) do include_context 'project navbar structure'
{
nav_item: _('Analytics'),
nav_sub_items: [
_('CI / CD'),
(_('Code Review') if Gitlab.ee?),
_('Repository'),
_('Value Stream')
]
}
end
let(:requirements_nav_item) do
{
nav_item: _('Requirements'),
nav_sub_items: [_('List')]
}
end
let(:structure) do let_it_be(:user) { create(:user) }
[ let_it_be(:project) { create(:project, :repository) }
{
nav_item: _('Project overview'),
nav_sub_items: [
_('Details'),
_('Activity'),
_('Releases')
]
},
{
nav_item: _('Repository'),
nav_sub_items: [
_('Files'),
_('Commits'),
_('Branches'),
_('Tags'),
_('Contributors'),
_('Graph'),
_('Compare'),
(_('Locked Files') if Gitlab.ee?)
]
},
{
nav_item: _('Issues'),
nav_sub_items: [
_('List'),
_('Boards'),
_('Labels'),
_('Milestones')
]
},
{
nav_item: _('Merge Requests'),
nav_sub_items: []
},
(requirements_nav_item if Gitlab.ee?),
{
nav_item: _('CI / CD'),
nav_sub_items: [
_('Pipelines'),
_('Jobs'),
_('Artifacts'),
_('Schedules')
]
},
{
nav_item: _('Operations'),
nav_sub_items: [
_('Metrics'),
_('Environments'),
_('Error Tracking'),
_('Serverless'),
_('Logs'),
_('Kubernetes')
]
},
analytics_nav_item,
{
nav_item: _('Wiki'),
nav_sub_items: []
},
{
nav_item: _('Snippets'),
nav_sub_items: []
},
{
nav_item: _('Settings'),
nav_sub_items: [
_('General'),
_('Members'),
_('Integrations'),
_('Webhooks'),
_('Repository'),
_('CI / CD'),
_('Operations'),
(_('Audit Events') if Gitlab.ee?)
].compact
}
]
end
before do before do
stub_licensed_features(requirements: false)
project.add_maintainer(user) project.add_maintainer(user)
sign_in(user) sign_in(user)
end end
...@@ -119,28 +21,19 @@ describe 'Project navbar' do ...@@ -119,28 +21,19 @@ describe 'Project navbar' do
end end
end end
if Gitlab.ee? context 'when pages are available' do
context 'when issues analytics is available' do
before do before do
stub_licensed_features(issues_analytics: true) allow(Gitlab.config.pages).to receive(:enabled).and_return(true)
analytics_nav_item[:nav_sub_items] << _('Issues')
analytics_nav_item[:nav_sub_items].sort!
visit project_path(project) insert_after_sub_nav_item(
end _('Operations'),
within: _('Settings'),
it_behaves_like 'verified navigation bar' new_sub_nav_item_name: _('Pages')
end )
context 'when requirements is available' do
before do
stub_licensed_features(requirements: true)
visit project_path(project) visit project_path(project)
end end
it_behaves_like 'verified navigation bar' it_behaves_like 'verified navigation bar'
end end
end
end end
# frozen_string_literal: true
module NavbarStructureHelper
def insert_after_nav_item(before_nav_item_name, new_nav_item:)
expect(structure).to include(a_hash_including(nav_item: before_nav_item_name))
index = structure.find_index { |h| h[:nav_item] == before_nav_item_name }
structure.insert(index + 1, new_nav_item)
end
def insert_after_sub_nav_item(before_sub_nav_item_name, within:, new_sub_nav_item_name:)
expect(structure).to include(a_hash_including(nav_item: within))
hash = structure.find { |h| h[:nav_item] == within }
expect(hash).to have_key(:nav_sub_items)
expect(hash[:nav_sub_items]).to include(before_sub_nav_item_name)
index = hash[:nav_sub_items].find_index(before_sub_nav_item_name)
hash[:nav_sub_items].insert(index + 1, new_sub_nav_item_name)
end
end
# frozen_string_literal: true
RSpec.shared_context 'project navbar structure' do
let(:requirements_nav_item) do
{
nav_item: _('Requirements'),
nav_sub_items: [_('List')]
}
end
let(:analytics_nav_item) do
{
nav_item: _('Analytics'),
nav_sub_items: [
_('CI / CD'),
(_('Code Review') if Gitlab.ee?),
_('Repository'),
_('Value Stream')
]
}
end
let(:structure) do
[
{
nav_item: _('Project overview'),
nav_sub_items: [
_('Details'),
_('Activity'),
_('Releases')
]
},
{
nav_item: _('Repository'),
nav_sub_items: [
_('Files'),
_('Commits'),
_('Branches'),
_('Tags'),
_('Contributors'),
_('Graph'),
_('Compare'),
(_('Locked Files') if Gitlab.ee?)
]
},
{
nav_item: _('Issues'),
nav_sub_items: [
_('List'),
_('Boards'),
_('Labels'),
_('Milestones')
]
},
{
nav_item: _('Merge Requests'),
nav_sub_items: []
},
(requirements_nav_item if Gitlab.ee?),
{
nav_item: _('CI / CD'),
nav_sub_items: [
_('Pipelines'),
_('Jobs'),
_('Artifacts'),
_('Schedules')
]
},
{
nav_item: _('Operations'),
nav_sub_items: [
_('Metrics'),
_('Environments'),
_('Error Tracking'),
_('Serverless'),
_('Logs'),
_('Kubernetes')
]
},
analytics_nav_item,
{
nav_item: _('Wiki'),
nav_sub_items: []
},
{
nav_item: _('Snippets'),
nav_sub_items: []
},
{
nav_item: _('Settings'),
nav_sub_items: [
_('General'),
_('Members'),
_('Integrations'),
_('Webhooks'),
_('Repository'),
_('CI / CD'),
_('Operations'),
(_('Audit Events') if Gitlab.ee?)
].compact
}
].compact
end
end
RSpec.shared_context 'group navbar structure' do
let(:analytics_nav_item) do
{
nav_item: _('Analytics'),
nav_sub_items: [
_('Contribution')
]
}
end
let(:settings_nav_item) do
{
nav_item: _('Settings'),
nav_sub_items: [
_('General'),
_('Projects'),
_('CI / CD'),
_('Webhooks'),
_('Audit Events'),
_('Usage Quotas')
]
}
end
let(:structure) do
[
{
nav_item: _('Group overview'),
nav_sub_items: [
_('Details'),
_('Activity')
]
},
{
nav_item: _('Issues'),
nav_sub_items: [
_('List'),
_('Board'),
_('Labels'),
_('Milestones')
]
},
{
nav_item: _('Merge Requests'),
nav_sub_items: []
},
{
nav_item: _('Kubernetes'),
nav_sub_items: []
},
(analytics_nav_item if Gitlab.ee?),
{
nav_item: _('Members'),
nav_sub_items: []
}
]
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment