From fb84bec54255cafecb7aa2b25816426be2d35505 Mon Sep 17 00:00:00 2001 From: Zeger-Jan van de Weg Date: Fri, 15 Sep 2017 09:53:28 +0200 Subject: Allow updating of project auto devops settings Updating didn't work, as the project_id was missing to be set for the project_auto_devops model. Fixes gitlab-org/gitlab-ce#37893 --- app/models/project.rb | 2 +- .../unreleased/zj-update-project-settings.yml | 5 ++++ .../pipelines_setttings_controller_spec.rb | 31 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/zj-update-project-settings.yml create mode 100644 spec/controllers/projects/pipelines_setttings_controller_spec.rb diff --git a/app/models/project.rb b/app/models/project.rb index ff5638dd155..2b2bfbceb9d 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 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/changelogs/unreleased/zj-update-project-settings.yml b/changelogs/unreleased/zj-update-project-settings.yml new file mode 100644 index 00000000000..6ee3afcd6e2 --- /dev/null +++ b/changelogs/unreleased/zj-update-project-settings.yml @@ -0,0 +1,5 @@ +--- +title: Allow updating of project auto devops settings +merge_request: +author: +type: fixed diff --git a/spec/controllers/projects/pipelines_setttings_controller_spec.rb b/spec/controllers/projects/pipelines_setttings_controller_spec.rb new file mode 100644 index 00000000000..9eb6d7ce8b5 --- /dev/null +++ b/spec/controllers/projects/pipelines_setttings_controller_spec.rb @@ -0,0 +1,31 @@ +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: { enabled: false, domain: 'mempmep.md' } + } + end + + context 'when updating the auto_devops settings' do + 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 + end + end +end -- cgit v1.2.1 From 65e5888f1d42fed563f2c369e6c05cd64fde0341 Mon Sep 17 00:00:00 2001 From: Zeger-Jan van de Weg Date: Fri, 15 Sep 2017 10:59:16 +0200 Subject: Remove changelog entry --- changelogs/unreleased/zj-update-project-settings.yml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 changelogs/unreleased/zj-update-project-settings.yml diff --git a/changelogs/unreleased/zj-update-project-settings.yml b/changelogs/unreleased/zj-update-project-settings.yml deleted file mode 100644 index 6ee3afcd6e2..00000000000 --- a/changelogs/unreleased/zj-update-project-settings.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Allow updating of project auto devops settings -merge_request: -author: -type: fixed -- cgit v1.2.1 From cf851ce559b1af2b0fecd13a06c362b15b5d5df8 Mon Sep 17 00:00:00 2001 From: Zeger-Jan van de Weg Date: Mon, 18 Sep 2017 11:54:48 +0200 Subject: Fix instance default option being true as value When a user selected 'Instance default' as value for the auto devops settings, this was interpreted as a true value. Now we post an empty string in this case, meaning we want to set `NULL` in the database. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/37893#note_40541294 --- .../projects/pipelines_settings/_show.html.haml | 4 +- .../projects/pipelines_settings_controller_spec.rb | 43 ++++++++++++++++++++++ .../pipelines_setttings_controller_spec.rb | 31 ---------------- 3 files changed, 45 insertions(+), 33 deletions(-) create mode 100644 spec/controllers/projects/pipelines_settings_controller_spec.rb delete mode 100644 spec/controllers/projects/pipelines_setttings_controller_spec.rb 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 diff --git a/spec/controllers/projects/pipelines_setttings_controller_spec.rb b/spec/controllers/projects/pipelines_setttings_controller_spec.rb deleted file mode 100644 index 9eb6d7ce8b5..00000000000 --- a/spec/controllers/projects/pipelines_setttings_controller_spec.rb +++ /dev/null @@ -1,31 +0,0 @@ -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: { enabled: false, domain: 'mempmep.md' } - } - end - - context 'when updating the auto_devops settings' do - 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 - end - end -end -- cgit v1.2.1