From 0653e08efd039a5905f3fa4f6e9cef9f5d2f799c Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 20 Sep 2021 13:18:24 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-3-stable-ee --- .../groups/group_members/index.html.haml_spec.rb | 68 +++++++++++++++ .../help/instance_configuration.html.haml_spec.rb | 9 +- .../layouts/nav/sidebar/_project.html.haml_spec.rb | 30 ++++++- .../profiles/notifications/show.html.haml_spec.rb | 29 +++++++ spec/views/projects/diffs/_stats.html.haml_spec.rb | 58 ------------- spec/views/projects/empty.html.haml_spec.rb | 2 +- .../merge_requests/_commits.html.haml_spec.rb | 8 +- .../project_members/index.html.haml_spec.rb | 96 ++++++++++++++++++++++ spec/views/search/_results.html.haml_spec.rb | 8 +- .../shared/access_tokens/_table.html.haml_spec.rb | 2 - 10 files changed, 240 insertions(+), 70 deletions(-) create mode 100644 spec/views/groups/group_members/index.html.haml_spec.rb create mode 100644 spec/views/profiles/notifications/show.html.haml_spec.rb delete mode 100644 spec/views/projects/diffs/_stats.html.haml_spec.rb create mode 100644 spec/views/projects/project_members/index.html.haml_spec.rb (limited to 'spec/views') diff --git a/spec/views/groups/group_members/index.html.haml_spec.rb b/spec/views/groups/group_members/index.html.haml_spec.rb new file mode 100644 index 00000000000..8e190c24495 --- /dev/null +++ b/spec/views/groups/group_members/index.html.haml_spec.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'groups/group_members/index', :aggregate_failures do + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + + before do + allow(view).to receive(:group_members_app_data).and_return({}) + allow(view).to receive(:current_user).and_return(user) + assign(:group, group) + assign(:group_member, build(:group_member, group: group)) + end + + context 'when user can invite members for the group' do + before do + group.add_owner(user) + end + + context 'when modal is enabled' do + it 'renders as expected' do + render + + expect(rendered).to have_content('Group members') + expect(rendered).to have_content('You can invite a new member') + + expect(rendered).to have_selector('.js-invite-group-trigger') + expect(rendered).to have_selector('.js-invite-members-trigger') + expect(response).to render_template(partial: 'groups/_invite_members_modal') + + expect(rendered).not_to have_selector('#invite-member-tab') + expect(rendered).not_to have_selector('#invite-group-tab') + expect(response).not_to render_template(partial: 'shared/members/_invite_group') + end + end + + context 'when modal is not enabled' do + before do + stub_feature_flags(invite_members_group_modal: false) + end + + it 'renders as expected' do + render + + expect(rendered).to have_content('Group members') + expect(rendered).to have_content('You can invite a new member') + + expect(rendered).to have_selector('#invite-member-tab') + expect(rendered).to have_selector('#invite-group-tab') + expect(response).to render_template(partial: 'shared/members/_invite_group') + + expect(rendered).not_to have_selector('.js-invite-group-trigger') + expect(rendered).not_to have_selector('.js-invite-members-trigger') + expect(response).not_to render_template(partial: 'groups/_invite_members_modal') + end + end + end + + context 'when user can not invite members for the group' do + it 'renders as expected', :aggregate_failures do + render + + expect(rendered).not_to have_content('Group members') + expect(rendered).not_to have_content('You can invite a new member') + end + end +end diff --git a/spec/views/help/instance_configuration.html.haml_spec.rb b/spec/views/help/instance_configuration.html.haml_spec.rb index 7b431bb4180..c4542046a9d 100644 --- a/spec/views/help/instance_configuration.html.haml_spec.rb +++ b/spec/views/help/instance_configuration.html.haml_spec.rb @@ -9,6 +9,7 @@ RSpec.describe 'help/instance_configuration' do let(:ssh_settings) { settings[:ssh_algorithms_hashes] } before do + create(:plan, name: 'plan1', title: 'Plan 1') assign(:instance_configuration, instance_configuration) end @@ -17,7 +18,9 @@ RSpec.describe 'help/instance_configuration' do expect(rendered).to have_link(nil, href: '#ssh-host-keys-fingerprints') if ssh_settings.any? expect(rendered).to have_link(nil, href: '#gitlab-pages') - expect(rendered).to have_link(nil, href: '#gitlab-ci') + expect(rendered).to have_link(nil, href: '#size-limits') + expect(rendered).to have_link(nil, href: '#package-registry') + expect(rendered).to have_link(nil, href: '#rate-limits') end it 'has several sections' do @@ -25,7 +28,9 @@ RSpec.describe 'help/instance_configuration' do expect(rendered).to have_css('h2#ssh-host-keys-fingerprints') if ssh_settings.any? expect(rendered).to have_css('h2#gitlab-pages') - expect(rendered).to have_css('h2#gitlab-ci') + expect(rendered).to have_css('h2#size-limits') + expect(rendered).to have_css('h2#package-registry') + expect(rendered).to have_css('h2#rate-limits') end end end diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb index 3afebfbedab..adfe1cee6d6 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -68,8 +68,8 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end describe 'Learn GitLab' do - it 'has a link to the learn GitLab experiment' do - allow(view).to receive(:learn_gitlab_experiment_enabled?).and_return(true) + it 'has a link to the learn GitLab' do + allow(view).to receive(:learn_gitlab_enabled?).and_return(true) allow_next_instance_of(LearnGitlab::Onboarding) do |onboarding| expect(onboarding).to receive(:completed_percentage).and_return(20) end @@ -968,6 +968,32 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end end end + + describe 'Usage Quotas' do + context 'with project_storage_ui feature flag enabled' do + before do + stub_feature_flags(project_storage_ui: true) + end + + it 'has a link to Usage Quotas' do + render + + expect(rendered).to have_link('Usage Quotas', href: project_usage_quotas_path(project)) + end + end + + context 'with project_storage_ui feature flag disabled' do + before do + stub_feature_flags(project_storage_ui: false) + end + + it 'does not have a link to Usage Quotas' do + render + + expect(rendered).not_to have_link('Usage Quotas', href: project_usage_quotas_path(project)) + end + end + end end describe 'Hidden menus' do diff --git a/spec/views/profiles/notifications/show.html.haml_spec.rb b/spec/views/profiles/notifications/show.html.haml_spec.rb new file mode 100644 index 00000000000..9cdf8124fcf --- /dev/null +++ b/spec/views/profiles/notifications/show.html.haml_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'profiles/notifications/show' do + let(:groups) { GroupsFinder.new(user).execute.page(1) } + let(:user) { create(:user) } + + before do + assign(:group_notifications, []) + assign(:project_notifications, []) + assign(:user, user) + assign(:user_groups, groups) + allow(controller).to receive(:current_user).and_return(user) + allow(view).to receive(:experiment_enabled?) + end + + context 'when there is no database value for User#notification_email' do + let(:option_default) { _('Use primary email (%{email})') % { email: user.email } } + let(:option_primary_email) { user.email } + let(:options) { [option_default, option_primary_email] } + + it 'displays the correct elements' do + render + + expect(rendered).to have_select('user_notification_email', options: options, selected: nil) + end + end +end diff --git a/spec/views/projects/diffs/_stats.html.haml_spec.rb b/spec/views/projects/diffs/_stats.html.haml_spec.rb deleted file mode 100644 index f0580b50349..00000000000 --- a/spec/views/projects/diffs/_stats.html.haml_spec.rb +++ /dev/null @@ -1,58 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'projects/diffs/_stats.html.haml' do - let(:project) { create(:project, :repository) } - let(:commit) { project.commit('570e7b2abdd848b95f2f578043fc23bd6f6fd24d') } - - def render_view - render partial: "projects/diffs/stats", locals: { diff_files: commit.diffs.diff_files } - end - - context 'when the commit contains several changes' do - it 'uses plural for additions' do - render_view - - expect(rendered).to have_text('additions') - end - - it 'uses plural for deletions' do - render_view - end - end - - context 'when the commit contains no addition and no deletions' do - let(:commit) { project.commit('4cd80ccab63c82b4bad16faa5193fbd2aa06df40') } - - it 'uses plural for additions' do - render_view - - expect(rendered).to have_text('additions') - end - - it 'uses plural for deletions' do - render_view - - expect(rendered).to have_text('deletions') - end - end - - context 'when the commit contains exactly one addition and one deletion' do - let(:commit) { project.commit('08f22f255f082689c0d7d39d19205085311542bc') } - - it 'uses singular for additions' do - render_view - - expect(rendered).to have_text('addition') - expect(rendered).not_to have_text('additions') - end - - it 'uses singular for deletions' do - render_view - - expect(rendered).to have_text('deletion') - expect(rendered).not_to have_text('deletions') - end - end -end diff --git a/spec/views/projects/empty.html.haml_spec.rb b/spec/views/projects/empty.html.haml_spec.rb index 70da4fc9e27..416dfc10174 100644 --- a/spec/views/projects/empty.html.haml_spec.rb +++ b/spec/views/projects/empty.html.haml_spec.rb @@ -53,7 +53,7 @@ RSpec.describe 'projects/empty' do it 'shows invite members info', :aggregate_failures do render - expect(rendered).to have_selector('[data-track-event=render]') + expect(rendered).to have_selector('[data-track-action=render]') expect(rendered).to have_selector('[data-track-label=invite_members_empty_project]') expect(rendered).to have_content('Invite your team') expect(rendered).to have_content('Add members to this project and start collaborating with your team.') diff --git a/spec/views/projects/merge_requests/_commits.html.haml_spec.rb b/spec/views/projects/merge_requests/_commits.html.haml_spec.rb index fd77c4eb372..f0273c1716f 100644 --- a/spec/views/projects/merge_requests/_commits.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/_commits.html.haml_spec.rb @@ -21,7 +21,7 @@ RSpec.describe 'projects/merge_requests/_commits.html.haml', :sidekiq_might_not_ controller.prepend_view_path('app/views/projects') assign(:merge_request, merge_request) - assign(:commits, merge_request.commits) + assign(:commits, merge_request.commits(load_from_gitaly: true)) assign(:hidden_commit_count, 0) end @@ -34,6 +34,12 @@ RSpec.describe 'projects/merge_requests/_commits.html.haml', :sidekiq_might_not_ expect(rendered).to have_link(href: href) end + it 'shows signature verification badge' do + render + + expect(rendered).to have_css('.gpg-status-box') + end + context 'when there are hidden commits' do before do assign(:hidden_commit_count, 1) diff --git a/spec/views/projects/project_members/index.html.haml_spec.rb b/spec/views/projects/project_members/index.html.haml_spec.rb new file mode 100644 index 00000000000..b9b0d57bcb5 --- /dev/null +++ b/spec/views/projects/project_members/index.html.haml_spec.rb @@ -0,0 +1,96 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'projects/project_members/index', :aggregate_failures do + let_it_be(:user) { create(:user) } + let_it_be(:source) { create(:project, :empty_repo) } + let_it_be(:project) { ProjectPresenter.new(source, current_user: user) } + + before do + allow(view).to receive(:project_members_app_data_json).and_return({}) + allow(view).to receive(:current_user).and_return(user) + assign(:project, project) + assign(:project_member, build(:project_member, project: source)) + end + + context 'when user can invite members for the project' do + before do + project.add_maintainer(user) + end + + context 'when modal is enabled' do + it 'renders as expected' do + render + + expect(rendered).to have_content('Project members') + expect(rendered).to have_content('You can invite a new member') + expect(rendered).to have_selector('.js-import-a-project-modal') + expect(rendered).to have_selector('.js-invite-group-trigger') + expect(rendered).to have_selector('.js-invite-members-trigger') + expect(rendered).not_to have_content('Members can be added by project') + expect(response).to render_template(partial: 'projects/_invite_members_modal') + end + + context 'when project is not allowed to share with group' do + before do + project.namespace.share_with_group_lock = true + end + + it 'renders as expected' do + render + + expect(rendered).not_to have_selector('.js-invite-group-trigger') + end + end + end + + context 'when modal is not enabled' do + before do + stub_feature_flags(invite_members_group_modal: false) + end + + it 'renders as expected' do + render + + expect(rendered).to have_content('Project members') + expect(rendered).to have_content('You can invite a new member') + expect(rendered).not_to have_selector('.js-invite-group-trigger') + expect(rendered).not_to have_selector('.js-invite-members-trigger') + expect(rendered).not_to have_content('Members can be added by project') + expect(response).not_to render_template(partial: 'projects/_invite_members_modal') + expect(response).to render_template(partial: 'shared/members/_invite_member') + end + + context 'when project can not be shared' do + before do + project.namespace.share_with_group_lock = true + end + + it 'renders as expected' do + render + + expect(rendered).to have_content('Project members') + expect(rendered).to have_content('You can invite a new member') + expect(response).not_to render_template(partial: 'projects/_invite_members_modal') + end + end + end + end + + context 'when user can not invite members or group for the project' do + context 'when project can be shared' do + it 'renders as expected', :aggregate_failures do + render + + expect(rendered).to have_content('Project members') + expect(rendered).not_to have_content('You can invite a new member') + expect(rendered).not_to have_selector('.js-import-a-project-modal') + expect(rendered).not_to have_selector('.js-invite-group-trigger') + expect(rendered).not_to have_selector('.js-invite-members-trigger') + expect(rendered).to have_content('Members can be added by project') + expect(response).not_to render_template(partial: 'projects/_invite_members_modal') + end + end + end +end diff --git a/spec/views/search/_results.html.haml_spec.rb b/spec/views/search/_results.html.haml_spec.rb index ecfcf74edc1..dcf1f46b46c 100644 --- a/spec/views/search/_results.html.haml_spec.rb +++ b/spec/views/search/_results.html.haml_spec.rb @@ -74,7 +74,7 @@ RSpec.describe 'search/_results' do it 'renders the click text event tracking attributes' do render - expect(rendered).to have_selector('[data-track-event=click_text]') + expect(rendered).to have_selector('[data-track-action=click_text]') expect(rendered).to have_selector('[data-track-property=search_result]') end end @@ -83,7 +83,7 @@ RSpec.describe 'search/_results' do it 'does not render the click text event tracking attributes' do render - expect(rendered).not_to have_selector('[data-track-event=click_text]') + expect(rendered).not_to have_selector('[data-track-action=click_text]') expect(rendered).not_to have_selector('[data-track-property=search_result]') end end @@ -105,7 +105,7 @@ RSpec.describe 'search/_results' do it 'renders the click text event tracking attributes' do render - expect(rendered).to have_selector('[data-track-event=click_text]') + expect(rendered).to have_selector('[data-track-action=click_text]') expect(rendered).to have_selector('[data-track-property=search_result]') end end @@ -114,7 +114,7 @@ RSpec.describe 'search/_results' do it 'does not render the click text event tracking attributes' do render - expect(rendered).not_to have_selector('[data-track-event=click_text]') + expect(rendered).not_to have_selector('[data-track-action=click_text]') expect(rendered).not_to have_selector('[data-track-property=search_result]') end end diff --git a/spec/views/shared/access_tokens/_table.html.haml_spec.rb b/spec/views/shared/access_tokens/_table.html.haml_spec.rb index 489675b5683..0a23768b4f1 100644 --- a/spec/views/shared/access_tokens/_table.html.haml_spec.rb +++ b/spec/views/shared/access_tokens/_table.html.haml_spec.rb @@ -19,7 +19,6 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do allow(view).to receive(:personal_access_token_expiration_enforced?).and_return(token_expiry_enforced?) allow(view).to receive(:show_profile_token_expiry_notification?).and_return(true) - allow(view).to receive(:distance_of_time_in_words_to_now).and_return('4 days') if project project.add_maintainer(user) @@ -140,7 +139,6 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do # Expiry expect(rendered).to have_content 'Expired', count: 2 - expect(rendered).to have_content 'In 4 days' # Revoke buttons expect(rendered).to have_link 'Revoke', href: 'path/', class: 'btn-danger-secondary', count: 1 -- cgit v1.2.1