diff options
author | Shinya Maeda <shinya@gitlab.com> | 2017-06-29 12:33:24 +0300 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2017-07-05 12:38:33 +0300 |
commit | c98c8f9a883776c4c6ffc3cf9c2214541bb8d75b (patch) | |
tree | d5bcf52ff8c735503506189427d5c1cbce719423 /spec/features/projects/pipeline_schedules_spec.rb | |
parent | 2dba0cf0beabee37b7c2cc75a8b1c1962a6125bf (diff) |
Fix feature tests
Diffstat (limited to 'spec/features/projects/pipeline_schedules_spec.rb')
-rw-r--r-- | spec/features/projects/pipeline_schedules_spec.rb | 101 |
1 files changed, 21 insertions, 80 deletions
diff --git a/spec/features/projects/pipeline_schedules_spec.rb b/spec/features/projects/pipeline_schedules_spec.rb index 9c544ad3d38..5b88552cacd 100644 --- a/spec/features/projects/pipeline_schedules_spec.rb +++ b/spec/features/projects/pipeline_schedules_spec.rb @@ -19,12 +19,19 @@ feature 'Pipeline Schedules', :feature, js: true do visit_pipelines_schedules end + it 'avoids N + 1 queries' do + control_count = ActiveRecord::QueryRecorder.new { visit_pipelines_schedules }.count + + create_list(:ci_pipeline_schedule, 2, project: project) + + expect { visit_pipelines_schedules }.not_to exceed_query_limit(control_count) + end + describe 'The view' do it 'displays the required information description' do page.within('.pipeline-schedule-table-row') do expect(page).to have_content('pipeline schedule') - expect(find(".next-run-cell time")['data-original-title']) - .to include(pipeline_schedule.real_next_run.strftime('%b %-d, %Y')) + expect(page).to have_content(pipeline_schedule.real_next_run.strftime('%b %d, %Y')) expect(page).to have_link('master') expect(page).to have_link("##{pipeline.id}") end @@ -55,7 +62,7 @@ feature 'Pipeline Schedules', :feature, js: true do it 'deletes the pipeline' do click_link 'Delete' - expect(page).not_to have_css(".pipeline-schedule-table-row") + expect(page).not_to have_content('pipeline schedule') end end @@ -93,15 +100,6 @@ feature 'Pipeline Schedules', :feature, js: true do expect(page).to have_content('This field is required') end - - it 'sets a variable' do - fill_in_schedule_form - fill_in_variable - - save_pipeline_schedule - - expect(Ci::PipelineSchedule.last.job_variables).to eq([{ key: 'foo', value: 'bar', public: false }]) - end end describe 'PATCH /projects/pipelines_schedules/:id/edit' do @@ -124,14 +122,6 @@ feature 'Pipeline Schedules', :feature, js: true do expect(page).to have_content('my brand new description') end - it 'adds a new variable' do - fill_in_variable - - save_pipeline_schedule - - expect(Ci::PipelineSchedule.last.job_variables).to eq([{ key: 'foo', value: 'bar', public: false }]) - end - context 'when ref is nil' do before do pipeline_schedule.update_attribute(:ref, nil) @@ -144,40 +134,6 @@ feature 'Pipeline Schedules', :feature, js: true do end end end - - context 'when variables already exist' do - before do - create(:ci_pipeline_schedule_variable, key: 'some_key', value: 'some_value', pipeline_schedule: pipeline_schedule) - edit_pipeline_schedule - end - - it 'edits existing variable' do - expect(first('[name="schedule[variables_attributes][][key]"]').value).to eq('some_key') - expect(first('[name="schedule[variables_attributes][][value]"]').value).to eq('some_value') - - fill_in_variable - save_pipeline_schedule - - expect(Ci::PipelineSchedule.last.job_variables).to eq([{ key: 'foo', value: 'bar', public: false }]) - end - - it 'removes an existing variable' do - remove_variable - save_pipeline_schedule - - expect(Ci::PipelineSchedule.last.job_variables).to eq([]) - end - - it 'adds another variable' do - fill_in_variable(1) - save_pipeline_schedule - - expect(Ci::PipelineSchedule.last.job_variables).to eq([ - { key: 'some_key', value: 'some_value', public: false }, - { key: 'foo', value: 'bar', public: false } - ]) - end - end end context 'when user creates a new pipeline schedule with variables' do @@ -194,18 +150,16 @@ feature 'Pipeline Schedules', :feature, js: true do scenario 'user sees the new variable in edit window' do find(".content-list .pipeline-schedule-table-row:nth-child(1) .btn-group a[title='Edit']").click - page.within('.pipeline-variable-list') do - expect(find(".pipeline-variable-row:nth-child(1) .pipeline-variable-key-input").value).to eq('AAA') - expect(find(".pipeline-variable-row:nth-child(1) .pipeline-variable-value-input").value).to eq('AAA123') - expect(find(".pipeline-variable-row:nth-child(2) .pipeline-variable-key-input").value).to eq('BBB') - expect(find(".pipeline-variable-row:nth-child(2) .pipeline-variable-value-input").value).to eq('BBB123') - end + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(1) .pipeline-variable-key-input").value).to eq('AAA') + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(1) .pipeline-variable-value-input").value).to eq('AAA123') + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(2) .pipeline-variable-key-input").value).to eq('BBB') + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(2) .pipeline-variable-value-input").value).to eq('BBB123') end end context 'when user edits a variable of a pipeline schedule' do background do - create(:ci_pipeline_schedule, project: project, owner: user).tap do |pipeline_schedule| + create(:ci_pipeline_schedule, owner: user).tap do |pipeline_schedule| create(:ci_pipeline_schedule_variable, key: 'AAA', value: 'AAA123', pipeline_schedule: pipeline_schedule) end visit_pipelines_schedules @@ -217,30 +171,26 @@ feature 'Pipeline Schedules', :feature, js: true do scenario 'user sees the updated variable in edit window' do find(".content-list .pipeline-schedule-table-row:nth-child(1) .btn-group a[title='Edit']").click - page.within('.pipeline-variable-list') do - expect(find(".pipeline-variable-row:nth-child(1) .pipeline-variable-key-input").value).to eq('foo') - expect(find(".pipeline-variable-row:nth-child(1) .pipeline-variable-value-input").value).to eq('bar') - end + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(1) .pipeline-variable-key-input").value).to eq('foo') + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(1) .pipeline-variable-value-input").value).to eq('bar') end end context 'when user removes a variable of a pipeline schedule' do background do - create(:ci_pipeline_schedule, project: project, owner: user).tap do |pipeline_schedule| + create(:ci_pipeline_schedule, owner: user).tap do |pipeline_schedule| create(:ci_pipeline_schedule_variable, key: 'AAA', value: 'AAA123', pipeline_schedule: pipeline_schedule) end visit_pipelines_schedules find(".content-list .pipeline-schedule-table-row:nth-child(1) .btn-group a[title='Edit']").click - find('.pipeline-variable-list .pipeline-variable-row-remove-button').click + first('.pipeline-variable-list .pipeline-variable-row-remove-button').click click_button 'Save pipeline schedule' end scenario 'user does not see the removed variable in edit window' do find(".content-list .pipeline-schedule-table-row:nth-child(1) .btn-group a[title='Edit']").click - page.within('.pipeline-variable-list') do - expect(find(".pipeline-variable-row:nth-child(1) .pipeline-variable-key-input").value).to eq('') - expect(find(".pipeline-variable-row:nth-child(1) .pipeline-variable-value-input").value).to eq('') - end + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(1) .pipeline-variable-key-input").value).to eq('') + expect(find(".pipeline-variable-list .pipeline-variable-row:nth-child(1) .pipeline-variable-value-input").value).to eq('') end end @@ -270,15 +220,6 @@ feature 'Pipeline Schedules', :feature, js: true do click_button 'Save pipeline schedule' end - def fill_in_variable(index = 0) - all('[name="schedule[variables_attributes][][key]"]')[index].set('foo') - all('[name="schedule[variables_attributes][][value]"]')[index].set('bar') - end - - def remove_variable - first('.js-pipeline-variable-list .js-row-remove-button').click - end - def fill_in_schedule_form fill_in 'schedule_description', with: 'my fancy description' fill_in 'schedule_cron', with: '* 1 2 3 4' |