Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-06-29 12:33:24 +0300
committerShinya Maeda <shinya@gitlab.com>2017-07-05 12:38:33 +0300
commitc98c8f9a883776c4c6ffc3cf9c2214541bb8d75b (patch)
treed5bcf52ff8c735503506189427d5c1cbce719423 /spec/features/projects/pipeline_schedules_spec.rb
parent2dba0cf0beabee37b7c2cc75a8b1c1962a6125bf (diff)
Fix feature tests
Diffstat (limited to 'spec/features/projects/pipeline_schedules_spec.rb')
-rw-r--r--spec/features/projects/pipeline_schedules_spec.rb101
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'