diff options
author | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
commit | 6438df3a1e0fb944485cebf07976160184697d72 (patch) | |
tree | 00b09bfd170e77ae9391b1a2f5a93ef6839f2597 /spec/views/layouts | |
parent | 42bcd54d971da7ef2854b896a7b34f4ef8601067 (diff) | |
download | gitlab-ce-6438df3a1e0fb944485cebf07976160184697d72.tar.gz |
Add latest changes from gitlab-org/gitlab@13-8-stable-eev13.8.0-rc42
Diffstat (limited to 'spec/views/layouts')
-rw-r--r-- | spec/views/layouts/_head.html.haml_spec.rb | 2 | ||||
-rw-r--r-- | spec/views/layouts/header/_new_dropdown.haml_spec.rb | 111 |
2 files changed, 83 insertions, 30 deletions
diff --git a/spec/views/layouts/_head.html.haml_spec.rb b/spec/views/layouts/_head.html.haml_spec.rb index d8748873f64..15fdfaaaa65 100644 --- a/spec/views/layouts/_head.html.haml_spec.rb +++ b/spec/views/layouts/_head.html.haml_spec.rb @@ -59,7 +59,7 @@ RSpec.describe 'layouts/_head' do render - expect(rendered).to match('<link rel="stylesheet" media="all" href="/stylesheets/highlight/themes/solarised-light.css" />') + expect(rendered).to match('<link rel="stylesheet" media="print" href="/stylesheets/highlight/themes/solarised-light.css" />') end context 'when an asset_host is set and snowplow url is set' do diff --git a/spec/views/layouts/header/_new_dropdown.haml_spec.rb b/spec/views/layouts/header/_new_dropdown.haml_spec.rb index cf33ec9884b..01892e72c97 100644 --- a/spec/views/layouts/header/_new_dropdown.haml_spec.rb +++ b/spec/views/layouts/header/_new_dropdown.haml_spec.rb @@ -3,10 +3,42 @@ require 'spec_helper' RSpec.describe 'layouts/header/_new_dropdown' do - let(:user) { create(:user) } + let_it_be(:user) { create(:user) } + + shared_examples_for 'invite member quick link' do + context 'when an experiment is active' do + before do + allow(Gitlab::Experimentation).to receive(:active?).and_return(true) + allow(view).to receive(:experiment_tracking_category_and_group) + allow(view).to receive(:tracking_label).with(user) + end + + context 'with ability to invite members' do + it { is_expected.to have_link('Invite members', href: href) } + + it 'records the experiment' do + subject + + expect(view).to have_received(:experiment_tracking_category_and_group) + .with(:invite_members_new_dropdown, subject: user) + expect(view).to have_received(:tracking_label).with(user) + end + end + + context 'without ability to invite members' do + let(:invite_member) { false } + + it { is_expected.not_to have_link('Invite members') } + end + end + + context 'when experiment is not active' do + it { is_expected.not_to have_link('Invite members') } + end + end context 'group-specific links' do - let(:group) { create(:group) } + let_it_be(:group) { create(:group) } before do stub_current_user(user) @@ -22,25 +54,39 @@ RSpec.describe 'layouts/header/_new_dropdown' do it 'has a "New project" link' do render - expect(rendered).to have_link( - 'New project', - href: new_project_path(namespace_id: group.id) - ) + expect(rendered).to have_link('New project', href: new_project_path(namespace_id: group.id)) end it 'has a "New subgroup" link' do render - expect(rendered).to have_link( - 'New subgroup', - href: new_group_path(parent_id: group.id) - ) + expect(rendered).to have_link('New subgroup', href: new_group_path(parent_id: group.id)) end end + + describe 'invite members quick link' do + let(:href) { group_group_members_path(group) } + let(:invite_member) { true } + + before do + allow(view).to receive(:can?).with(user, :create_projects, group).and_return(true) + allow(view).to receive(:can?).with(user, :admin_group_member, group).and_return(invite_member) + allow(view).to receive(:can_import_members?).and_return(invite_member) + allow(view).to receive(:experiment_enabled?) + end + + subject do + render + + rendered + end + + it_behaves_like 'invite member quick link' + end end context 'project-specific links' do - let(:project) { create(:project, creator: user, namespace: user.namespace) } + let_it_be(:project) { create(:project, creator: user, namespace: user.namespace) } before do assign(:project, project) @@ -54,33 +100,24 @@ RSpec.describe 'layouts/header/_new_dropdown' do it 'has a "New issue" link' do render - expect(rendered).to have_link( - 'New issue', - href: new_project_issue_path(project) - ) + expect(rendered).to have_link('New issue', href: new_project_issue_path(project)) end it 'has a "New merge request" link' do render - expect(rendered).to have_link( - 'New merge request', - href: project_new_merge_request_path(project) - ) + expect(rendered).to have_link('New merge request', href: project_new_merge_request_path(project)) end it 'has a "New snippet" link' do render - expect(rendered).to have_link( - 'New snippet', - href: new_project_snippet_path(project) - ) + expect(rendered).to have_link('New snippet', href: new_project_snippet_path(project)) end end context 'as a Project guest' do - let(:guest) { create(:user) } + let_it_be(:guest) { create(:user) } before do stub_current_user(guest) @@ -96,12 +133,28 @@ RSpec.describe 'layouts/header/_new_dropdown' do it 'has no "New snippet" link' do render - expect(rendered).not_to have_link( - 'New snippet', - href: new_project_snippet_path(project) - ) + expect(rendered).not_to have_link('New snippet', href: new_project_snippet_path(project)) end end + + describe 'invite members quick link' do + let(:invite_member) { true } + let(:href) { project_project_members_path(project) } + + before do + allow(view).to receive(:can_import_members?).and_return(invite_member) + stub_current_user(user) + allow(view).to receive(:experiment_enabled?) + end + + subject do + render + + rendered + end + + it_behaves_like 'invite member quick link' + end end context 'global links' do @@ -128,7 +181,7 @@ RSpec.describe 'layouts/header/_new_dropdown' do end context 'when the user is not allowed to create snippets' do - let(:user) { create(:user, :external)} + let(:user) { create(:user, :external) } it 'has no "New snippet" link' do render |