Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
a488d0c499
commit
a1ea041b49
|
|
@ -29,7 +29,7 @@ class Projects::ServiceDeskController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def allowed_update_attributes
|
||||
%i[issue_template_key outgoing_name project_key]
|
||||
%i[issue_template_key outgoing_name project_key add_external_participants_from_cc]
|
||||
end
|
||||
|
||||
def service_desk_attributes
|
||||
|
|
@ -41,7 +41,8 @@ class Projects::ServiceDeskController < Projects::ApplicationController
|
|||
issue_template_key: service_desk_settings&.issue_template_key,
|
||||
template_file_missing: service_desk_settings&.issue_template_missing?,
|
||||
outgoing_name: service_desk_settings&.outgoing_name,
|
||||
project_key: service_desk_settings&.project_key
|
||||
project_key: service_desk_settings&.project_key,
|
||||
add_external_participants_from_cc: service_desk_settings&.add_external_participants_from_cc
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ module ServiceDeskSettings
|
|||
|
||||
params[:project_key] = nil if params[:project_key].blank?
|
||||
|
||||
apply_feature_flag_restrictions!
|
||||
|
||||
# We want to know when custom email got enabled
|
||||
write_log_message = params[:custom_email_enabled].present? && !settings.custom_email_enabled?
|
||||
|
||||
|
|
@ -20,5 +22,14 @@ module ServiceDeskSettings
|
|||
ServiceResponse.error(message: settings.errors.full_messages.to_sentence)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def apply_feature_flag_restrictions!
|
||||
return if Feature.enabled?(:issue_email_participants, project)
|
||||
return unless params.include?(:add_external_participants_from_cc)
|
||||
|
||||
params.delete(:add_external_participants_from_cc)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -88,6 +88,16 @@ RSpec.describe Projects::ServiceDeskController, feature_category: :service_desk
|
|||
expect(json_response['issue_template_key']).to eq('service_desk')
|
||||
end
|
||||
|
||||
it 'sets add_external_participants_from_cc' do
|
||||
put project_service_desk_path(project, format: :json), params: { add_external_participants_from_cc: true }
|
||||
project.reset
|
||||
|
||||
settings = project.service_desk_setting
|
||||
expect(settings).to be_present
|
||||
expect(settings.add_external_participants_from_cc).to eq(true)
|
||||
expect(json_response['add_external_participants_from_cc']).to eq(true)
|
||||
end
|
||||
|
||||
it 'returns an error when update of service desk settings fails' do
|
||||
put project_service_desk_path(project, format: :json), params: { issue_template_key: 'invalid key' }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe ServiceDeskSettings::UpdateService, feature_category: :service_desk do
|
||||
RSpec.describe ServiceDeskSettings::UpdateService, :aggregate_failures, feature_category: :service_desk do
|
||||
describe '#execute' do
|
||||
let_it_be(:settings) do
|
||||
create(:service_desk_setting, outgoing_name: 'original name', custom_email: 'user@example.com')
|
||||
|
|
@ -12,14 +12,17 @@ RSpec.describe ServiceDeskSettings::UpdateService, feature_category: :service_de
|
|||
let_it_be(:user) { create(:user) }
|
||||
|
||||
context 'with valid params' do
|
||||
let(:params) { { outgoing_name: 'some name', project_key: 'foo' } }
|
||||
let(:params) { { outgoing_name: 'some name', project_key: 'foo', add_external_participants_from_cc: true } }
|
||||
|
||||
it 'updates service desk settings' do
|
||||
response = described_class.new(settings.project, user, params).execute
|
||||
|
||||
expect(response).to be_success
|
||||
expect(settings.reload.outgoing_name).to eq 'some name'
|
||||
expect(settings.reload.project_key).to eq 'foo'
|
||||
expect(settings.reset).to have_attributes(
|
||||
outgoing_name: 'some name',
|
||||
project_key: 'foo',
|
||||
add_external_participants_from_cc: true
|
||||
)
|
||||
end
|
||||
|
||||
context 'with custom email verification in finished state' do
|
||||
|
|
@ -39,6 +42,23 @@ RSpec.describe ServiceDeskSettings::UpdateService, feature_category: :service_de
|
|||
expect(Gitlab::AppLogger).to have_received(:info).with({ category: 'custom_email' })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when issue_email_participants feature flag is disabled' do
|
||||
before do
|
||||
stub_feature_flags(issue_email_participants: false)
|
||||
end
|
||||
|
||||
it 'updates service desk setting but not add_external_participants_from_cc value' do
|
||||
response = described_class.new(settings.project, user, params).execute
|
||||
|
||||
expect(response).to be_success
|
||||
expect(settings.reset).to have_attributes(
|
||||
outgoing_name: 'some name',
|
||||
project_key: 'foo',
|
||||
add_external_participants_from_cc: false
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when project_key is an empty string' do
|
||||
|
|
|
|||
Loading…
Reference in New Issue