summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/pipeline_schedules_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/projects/pipeline_schedules_controller_spec.rb')
-rw-r--r--spec/controllers/projects/pipeline_schedules_controller_spec.rb98
1 files changed, 64 insertions, 34 deletions
diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
index d28dd1e3e48..41bf5580993 100644
--- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb
+++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
@@ -189,47 +189,77 @@ describe Projects::PipelineSchedulesController do
key: 'CCC', pipeline_schedule: pipeline_schedule)
end
- context 'when params include one variable' do
- context 'when adds a new variable' do
- let(:schedule) do
- basic_param.merge({
- variables_attributes: [{ key: 'AAA', value: 'AAA123' }]
- })
- end
-
- it 'adds the new variable' do
- expect { go }.to change { Ci::PipelineScheduleVariable.count }.by(1)
-
- pipeline_schedule.reload
- expect(pipeline_schedule.variables.last.key).to eq('AAA')
- end
+ context 'when adds a new variable' do
+ let(:schedule) do
+ basic_param.merge({
+ variables_attributes: [{ key: 'AAA', value: 'AAA123' }]
+ })
+ end
+
+ it 'adds the new variable' do
+ expect { go }.to change { Ci::PipelineScheduleVariable.count }.by(1)
+
+ pipeline_schedule.reload
+ expect(pipeline_schedule.variables.last.key).to eq('AAA')
+ end
+ end
+
+ context 'when adds a new duplicated variable' do
+ let(:schedule) do
+ basic_param.merge({
+ variables_attributes: [{ key: 'CCC', value: 'AAA123' }]
+ })
+ end
+
+ it 'returns an error' do
+ expect { go }.not_to change { Ci::PipelineScheduleVariable.count }
+
+ pipeline_schedule.reload
+ expect(assigns(:schedule).errors['variables']).not_to be_empty
end
+ end
- context 'when updates a variable' do
- let(:schedule) do
- basic_param.merge({
- variables_attributes: [{ id: pipeline_schedule_variable.id, value: 'new_value' }]
- })
- end
+ context 'when updates a variable' do
+ let(:schedule) do
+ basic_param.merge({
+ variables_attributes: [{ id: pipeline_schedule_variable.id, value: 'new_value' }]
+ })
+ end
- it 'updates the variable' do
- expect { go }.not_to change { Ci::PipelineScheduleVariable.count }
+ it 'updates the variable' do
+ expect { go }.not_to change { Ci::PipelineScheduleVariable.count }
- pipeline_schedule_variable.reload
- expect(pipeline_schedule_variable.value).to eq('new_value')
- end
+ pipeline_schedule_variable.reload
+ expect(pipeline_schedule_variable.value).to eq('new_value')
end
+ end
- context 'when deletes a variable' do
- let(:schedule) do
- basic_param.merge({
- variables_attributes: [{ id: pipeline_schedule_variable.id, _destroy: true }]
- })
- end
+ context 'when deletes a variable' do
+ let(:schedule) do
+ basic_param.merge({
+ variables_attributes: [{ id: pipeline_schedule_variable.id, _destroy: true }]
+ })
+ end
- it 'delete the existsed variable' do
- expect { go }.to change { Ci::PipelineScheduleVariable.count }.by(-1)
- end
+ it 'delete the existsed variable' do
+ expect { go }.to change { Ci::PipelineScheduleVariable.count }.by(-1)
+ end
+ end
+
+ context 'when deletes and creates a same key simultaneously' do
+ let(:schedule) do
+ basic_param.merge({
+ variables_attributes: [{ id: pipeline_schedule_variable.id, _destroy: true },
+ { key: 'CCC', value: 'CCC123' }]
+ })
+ end
+
+ it 'updates the variable' do
+ expect { go }.not_to change { Ci::PipelineScheduleVariable.count }
+
+ pipeline_schedule.reload
+ expect(pipeline_schedule.variables.last.key).to eq('CCC')
+ expect(pipeline_schedule.variables.last.value).to eq('CCC123')
end
end
end