Revert extra validation for duplication between same keys on a submit
This commit is contained in:
		
							parent
							
								
									6c5c525a2a
								
							
						
					
					
						commit
						f433fee057
					
				|  | @ -33,8 +33,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def update |   def update | ||||||
|     if Ci::CreatePipelineScheduleService |     if schedule.update(schedule_params) | ||||||
|         .new(@project, current_user, schedule_params).update(schedule) |  | ||||||
|       redirect_to namespace_project_pipeline_schedules_path(@project.namespace.becomes(Namespace), @project) |       redirect_to namespace_project_pipeline_schedules_path(@project.namespace.becomes(Namespace), @project) | ||||||
|     else |     else | ||||||
|       render :edit |       render :edit | ||||||
|  |  | ||||||
|  | @ -1,39 +1,13 @@ | ||||||
| module Ci | module Ci | ||||||
|   class CreatePipelineScheduleService < BaseService |   class CreatePipelineScheduleService < BaseService | ||||||
|     def execute |     def execute | ||||||
|       pipeline_schedule = project.pipeline_schedules.build(pipeline_schedule_params) |       project.pipeline_schedules.create(pipeline_schedule_params) | ||||||
| 
 |  | ||||||
|       if variable_keys_duplicated? |  | ||||||
|         pipeline_schedule.errors.add('variables.key', "keys are duplicated") |  | ||||||
| 
 |  | ||||||
|         return pipeline_schedule |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       pipeline_schedule.save |  | ||||||
|       pipeline_schedule |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     def update(pipeline_schedule) |  | ||||||
|       if variable_keys_duplicated? |  | ||||||
|         pipeline_schedule.errors.add('variables.key', "keys are duplicated") |  | ||||||
| 
 |  | ||||||
|         return false |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       pipeline_schedule.update(pipeline_schedule_params) |  | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     private |     private | ||||||
| 
 | 
 | ||||||
|     def pipeline_schedule_params |     def pipeline_schedule_params | ||||||
|       @pipeline_schedule_params ||= params.merge(owner: current_user) |       params.merge(owner: current_user) | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     def variable_keys_duplicated? |  | ||||||
|       attributes = pipeline_schedule_params['variables_attributes'] |  | ||||||
|       return false unless attributes.is_a?(Array) |  | ||||||
| 
 |  | ||||||
|       attributes.map { |v| v['key'] }.uniq.length != attributes.length |  | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -142,21 +142,22 @@ describe Projects::PipelineSchedulesController do | ||||||
|         end |         end | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       context 'when variables_attributes has two variables and duplicted' do |       # This test no longer passes, since we removed a custom validation | ||||||
|         let(:schedule) do |       # context 'when variables_attributes has two variables and duplicted' do | ||||||
|           basic_param.merge({ |       #   let(:schedule) do | ||||||
|             variables_attributes: [ { key: 'AAA', value: 'AAA123' }, { key: 'AAA', value: 'BBB123' } ] |       #     basic_param.merge({ | ||||||
|           }) |       #       variables_attributes: [ { key: 'AAA', value: 'AAA123' }, { key: 'AAA', value: 'BBB123' } ] | ||||||
|         end |       #     }) | ||||||
|  |       #   end | ||||||
| 
 | 
 | ||||||
|         it 'returns an error that the keys of variable are duplicated' do |       #   it 'returns an error that the keys of variable are duplicated' do | ||||||
|           expect { post :create, namespace_id: project.namespace.to_param, project_id: project, schedule: schedule } |       #     expect { post :create, namespace_id: project.namespace.to_param, project_id: project, schedule: schedule } | ||||||
|             .to change { Ci::PipelineSchedule.count }.by(0) |       #       .to change { Ci::PipelineSchedule.count }.by(0) | ||||||
|             .and change { Ci::PipelineScheduleVariable.count }.by(0) |       #       .and change { Ci::PipelineScheduleVariable.count }.by(0) | ||||||
| 
 | 
 | ||||||
|           expect(assigns(:schedule).errors['variables.key']).not_to be_empty |       #     expect(assigns(:schedule).errors['variables.key']).not_to be_empty | ||||||
|         end |       #   end | ||||||
|       end |       # end | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     describe 'security' do |     describe 'security' do | ||||||
|  | @ -260,20 +261,21 @@ describe Projects::PipelineSchedulesController do | ||||||
|           end |           end | ||||||
|         end |         end | ||||||
| 
 | 
 | ||||||
|         context 'when params include two duplicated variables' do |         # This test no longer passes, since we removed a custom validation | ||||||
|           let(:schedule) do |         # context 'when params include two duplicated variables' do | ||||||
|             basic_param.merge({ |         #   let(:schedule) do | ||||||
|               variables_attributes: [ { key: 'AAA', value: 'AAA123' }, { key: 'AAA', value: 'BBB123' } ] |         #     basic_param.merge({ | ||||||
|             }) |         #       variables_attributes: [ { key: 'AAA', value: 'AAA123' }, { key: 'AAA', value: 'BBB123' } ] | ||||||
|           end |         #     }) | ||||||
|  |         #   end | ||||||
| 
 | 
 | ||||||
|           it 'returns an error that variables are duplciated' do |         #   it 'returns an error that variables are duplciated' do | ||||||
|             put :update, namespace_id: project.namespace.to_param, |         #     put :update, namespace_id: project.namespace.to_param, | ||||||
|               project_id: project, id: pipeline_schedule, schedule: schedule |         #       project_id: project, id: pipeline_schedule, schedule: schedule | ||||||
| 
 | 
 | ||||||
|             expect(assigns(:schedule).errors['variables.key']).not_to be_empty |         #     expect(assigns(:schedule).errors['variables.key']).not_to be_empty | ||||||
|           end |         #   end | ||||||
|         end |         # end | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       context 'when a pipeline schedule has one variable' do |       context 'when a pipeline schedule has one variable' do | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue