From 1039b5b9d82b6ac052a867153646b93e2cfa5101 Mon Sep 17 00:00:00 2001 From: Paul Slaughter <pslaughter@gitlab.com> Date: Wed, 1 May 2019 11:46:47 -0500 Subject: [PATCH] Fix approvals section when merge requests disabled **Note:** Previously, we simply hid the approvals section in the project edit. This is consistent with the MR section, but it's problematic because the approvals section uses ajax to load it's settings. --- ...merge_request_approvals_settings.html.haml | 5 +++-- ...-fetching-when-merge-requests-disabled.yml | 5 +++++ .../user_manages_approval_settings_spec.rb | 21 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 ee/changelogs/unreleased/11321-fix-approvals-fetching-when-merge-requests-disabled.yml diff --git a/ee/app/views/projects/_merge_request_approvals_settings.html.haml b/ee/app/views/projects/_merge_request_approvals_settings.html.haml index e526318a59c3a3e7..50450d448313e0b1 100644 --- a/ee/app/views/projects/_merge_request_approvals_settings.html.haml +++ b/ee/app/views/projects/_merge_request_approvals_settings.html.haml @@ -1,6 +1,7 @@ -- return unless @project.feature_available?(:merge_request_approvers) +- return unless @project.feature_available?(:merge_requests, current_user) +- return unless @project.feature_available?(:merge_request_approvers, current_user) -%section.settings.merge-requests-feature.no-animate#js-merge-request-approval-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)] } +%section.settings.merge-requests-feature.no-animate#js-merge-request-approval-settings{ class: [('expanded' if expanded)] } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _("Merge request approvals") %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _("Collapse") : _("Expand") diff --git a/ee/changelogs/unreleased/11321-fix-approvals-fetching-when-merge-requests-disabled.yml b/ee/changelogs/unreleased/11321-fix-approvals-fetching-when-merge-requests-disabled.yml new file mode 100644 index 0000000000000000..508f34d2e14c0c3a --- /dev/null +++ b/ee/changelogs/unreleased/11321-fix-approvals-fetching-when-merge-requests-disabled.yml @@ -0,0 +1,5 @@ +--- +title: Fix approvals project settings section when merge requests disabled +merge_request: 12070 +author: +type: fixed diff --git a/ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb b/ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb index 753e26e5a0407f0a..fecee2c75604df82 100644 --- a/ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb +++ b/ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb @@ -4,13 +4,34 @@ let(:project) { create(:project) } let(:user) { project.owner } let(:path) { edit_project_path(project) } + let(:licensed_features) { {} } + let(:project_features) { {} } before do sign_in(user) stub_licensed_features(licensed_features) + + project.project_feature.update(project_features) + visit path end + context 'when merge requests is not available' do + let(:project_features) { { merge_requests_access_level: ::ProjectFeature::DISABLED } } + + it 'does not show approval settings' do + expect(page).not_to have_selector('#js-merge-request-approval-settings') + end + end + + context 'when merge requests is available' do + let(:project_features) { { merge_requests_access_level: ::ProjectFeature::ENABLED } } + + it 'shows approval settings' do + expect(page).to have_selector('#js-merge-request-approval-settings') + end + end + context 'when `code_owner_approval_required` is available' do let(:licensed_features) { { code_owner_approval_required: true } } -- GitLab