summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz@gitlab.com>2017-09-19 06:58:51 +0000
committerGrzegorz Bizon <grzegorz@gitlab.com>2017-09-19 06:58:51 +0000
commit10aeb81e8fce3a9ded4a1a15e497b62bc28f88ce (patch)
tree8541849d5c8001925b49b7bbb3008e7013774e6f
parentff594bb3a9e5fae72a286132b88e2f1ebd4549af (diff)
parentcf851ce559b1af2b0fecd13a06c362b15b5d5df8 (diff)
downloadgitlab-ce-10aeb81e8fce3a9ded4a1a15e497b62bc28f88ce.tar.gz
Merge branch 'zj-update-project-settings' into 'master'
Allow updating of project auto devops settings Closes #37893 See merge request gitlab-org/gitlab-ce!14291
-rw-r--r--app/models/project.rb2
-rw-r--r--app/views/projects/pipelines_settings/_show.html.haml4
-rw-r--r--spec/controllers/projects/pipelines_settings_controller_spec.rb43
3 files changed, 46 insertions, 3 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 94ae0acbe1a..f7221e4f3b2 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -192,7 +192,7 @@ class Project < ActiveRecord::Base
accepts_nested_attributes_for :variables, allow_destroy: true
accepts_nested_attributes_for :project_feature, update_only: true
accepts_nested_attributes_for :import_data
- accepts_nested_attributes_for :auto_devops
+ accepts_nested_attributes_for :auto_devops, update_only: true
delegate :name, to: :owner, allow_nil: true, prefix: true
delegate :members, to: :team, prefix: true
diff --git a/app/views/projects/pipelines_settings/_show.html.haml b/app/views/projects/pipelines_settings/_show.html.haml
index 324cd423ede..2aceb4b529c 100644
--- a/app/views/projects/pipelines_settings/_show.html.haml
+++ b/app/views/projects/pipelines_settings/_show.html.haml
@@ -25,8 +25,8 @@
%span.descr
A specific .gitlab-ci.yml file needs to be specified before you can begin using Continious Integration and Delivery.
.radio
- = form.label :enabled do
- = form.radio_button :enabled, nil
+ = form.label :enabled_nil do
+ = form.radio_button :enabled, ''
%strong
Instance default (status: #{current_application_settings.auto_devops_enabled?})
%br
diff --git a/spec/controllers/projects/pipelines_settings_controller_spec.rb b/spec/controllers/projects/pipelines_settings_controller_spec.rb
new file mode 100644
index 00000000000..ee46ad00947
--- /dev/null
+++ b/spec/controllers/projects/pipelines_settings_controller_spec.rb
@@ -0,0 +1,43 @@
+require 'spec_helper'
+
+describe Projects::PipelinesSettingsController do
+ set(:user) { create(:user) }
+ set(:project_auto_devops) { create(:project_auto_devops) }
+ let(:project) { project_auto_devops.project }
+
+ before do
+ project.add_master(user)
+
+ sign_in(user)
+ end
+
+ describe 'PATCH update' do
+ before do
+ patch :update,
+ namespace_id: project.namespace.to_param,
+ project_id: project,
+ project: {
+ auto_devops_attributes: params
+ }
+ end
+
+ context 'when updating the auto_devops settings' do
+ let(:params) { { enabled: '', domain: 'mepmep.md' } }
+
+ it 'redirects to the settings page' do
+ expect(response).to have_http_status(302)
+ expect(flash[:notice]).to eq("Pipelines settings for '#{project.name}' were successfully updated.")
+ end
+
+ context 'following the instance default' do
+ let(:params) { { enabled: '' } }
+
+ it 'allows enabled to be set to nil' do
+ project_auto_devops.reload
+
+ expect(project_auto_devops.enabled).to be_nil
+ end
+ end
+ end
+ end
+end