From 33d82ccb453ef020d28f1307be1a3a97130c9e0b Mon Sep 17 00:00:00 2001 From: Jarka Kadlecova Date: Mon, 22 May 2017 12:07:12 +0200 Subject: simplify test&save actions when setting a service integration --- app/controllers/projects/services_controller.rb | 32 +++++++++++++++---------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'app/controllers/projects/services_controller.rb') diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb index f9d798d0455..89c4e81a36f 100644 --- a/app/controllers/projects/services_controller.rb +++ b/app/controllers/projects/services_controller.rb @@ -4,6 +4,7 @@ class Projects::ServicesController < Projects::ApplicationController # Authorize before_action :authorize_admin_project! before_action :service, only: [:edit, :update, :test] + before_action :build_service, only: [:update, :test] respond_to :html @@ -13,36 +14,41 @@ class Projects::ServicesController < Projects::ApplicationController end def update - @service.assign_attributes(service_params[:service]) if @service.save(context: :manual_change) - redirect_to( - edit_namespace_project_service_path(@project.namespace, @project, @service.to_param), - notice: 'Successfully updated.' - ) + redirect_to(namespace_project_settings_integrations_path(@project.namespace, @project), notice: success_message) else render 'edit' end end def test - return render_404 unless @service.can_test? + return render json: {}, status: :not_found unless @service.can_test? data = @service.test_data(project, current_user) outcome = @service.test(data) - if outcome[:success] - message = { notice: 'We sent a request to the provided URL' } - else - error_message = "We tried to send a request to the provided URL but an error occurred" - error_message << ": #{outcome[:result]}" if outcome[:result].present? - message = { alert: error_message } + message = {} + unless outcome[:success] + message = { error: true, message: 'Test failed', service_response: outcome[:result].to_s } end - redirect_back_or_default(options: message) + render json: message, status: :ok end private + def success_message + if @service.active? + "#{@service.title} activated." + else + "#{@service.title} settings saved, but not activated." + end + end + + def build_service + @service.assign_attributes(service_params[:service]) + end + def service @service ||= @project.find_or_initialize_service(params[:id]) end -- cgit v1.2.1 From b71025c014babf9663e0451ad21eabde91570259 Mon Sep 17 00:00:00 2001 From: Jarka Kadlecova Date: Fri, 26 May 2017 12:50:52 +0200 Subject: Add feature tests for improved JIRA settings --- app/controllers/projects/services_controller.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'app/controllers/projects/services_controller.rb') diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb index 89c4e81a36f..264665942f8 100644 --- a/app/controllers/projects/services_controller.rb +++ b/app/controllers/projects/services_controller.rb @@ -22,17 +22,22 @@ class Projects::ServicesController < Projects::ApplicationController end def test - return render json: {}, status: :not_found unless @service.can_test? + message = {} - data = @service.test_data(project, current_user) - outcome = @service.test(data) + if @service.can_test? + data = @service.test_data(project, current_user) + outcome = @service.test(data) - message = {} - unless outcome[:success] - message = { error: true, message: 'Test failed', service_response: outcome[:result].to_s } + unless outcome[:success] + message = { error: true, message: 'Test failed.', service_response: outcome[:result].to_s } + end + + status = :ok + else + status = :not_found end - render json: message, status: :ok + render json: message, status: status end private -- cgit v1.2.1 From b487a32cc0fc14e4c0977cb6ff298131818fea16 Mon Sep 17 00:00:00 2001 From: Jarka Kadlecova Date: Fri, 2 Jun 2017 13:44:04 +0200 Subject: Address review comments --- app/controllers/projects/services_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/controllers/projects/services_controller.rb') diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb index 264665942f8..704f8cc8a79 100644 --- a/app/controllers/projects/services_controller.rb +++ b/app/controllers/projects/services_controller.rb @@ -4,7 +4,7 @@ class Projects::ServicesController < Projects::ApplicationController # Authorize before_action :authorize_admin_project! before_action :service, only: [:edit, :update, :test] - before_action :build_service, only: [:update, :test] + before_action :update_service, only: [:update, :test] respond_to :html @@ -50,7 +50,7 @@ class Projects::ServicesController < Projects::ApplicationController end end - def build_service + def update_service @service.assign_attributes(service_params[:service]) end -- cgit v1.2.1