diff options
Diffstat (limited to 'spec/requests/projects/pipelines_controller_spec.rb')
-rw-r--r-- | spec/requests/projects/pipelines_controller_spec.rb | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/spec/requests/projects/pipelines_controller_spec.rb b/spec/requests/projects/pipelines_controller_spec.rb index 73e002b63b1..7bdb66755db 100644 --- a/spec/requests/projects/pipelines_controller_spec.rb +++ b/spec/requests/projects/pipelines_controller_spec.rb @@ -23,18 +23,25 @@ RSpec.describe Projects::PipelinesController, feature_category: :continuous_inte it 'does not execute N+1 queries' do get_pipelines_index - control_count = ActiveRecord::QueryRecorder.new do + create_pipelines + + control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do get_pipelines_index end.count - %w[pending running success failed canceled].each do |status| - create(:ci_pipeline, project: project, status: status) - end + create_pipelines # There appears to be one extra query for Pipelines#has_warnings? for some reason - expect { get_pipelines_index }.not_to exceed_query_limit(control_count + 1) + expect { get_pipelines_index }.not_to exceed_all_query_limit(control_count + 1) expect(response).to have_gitlab_http_status(:ok) - expect(json_response['pipelines'].count).to eq 6 + expect(json_response['pipelines'].count).to eq(11) + end + + def create_pipelines + %w[pending running success failed canceled].each do |status| + pipeline = create(:ci_pipeline, project: project, status: status) + create(:ci_build, :failed, pipeline: pipeline) + end end def get_pipelines_index @@ -49,13 +56,21 @@ RSpec.describe Projects::PipelinesController, feature_category: :continuous_inte it 'does not execute N+1 queries' do request_build_stage - control_count = ActiveRecord::QueryRecorder.new do + control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do request_build_stage end.count create(:ci_build, pipeline: pipeline, stage: 'build') - expect { request_build_stage }.not_to exceed_query_limit(control_count) + 2.times do |i| + create(:ci_build, + name: "test retryable #{i}", + pipeline: pipeline, + stage: 'build', + status: :failed) + end + + expect { request_build_stage }.not_to exceed_all_query_limit(control_count) expect(response).to have_gitlab_http_status(:ok) end @@ -66,13 +81,14 @@ RSpec.describe Projects::PipelinesController, feature_category: :continuous_inte request_build_stage(retried: true) - control_count = ActiveRecord::QueryRecorder.new do + control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do request_build_stage(retried: true) end.count create(:ci_build, :retried, :failed, pipeline: pipeline, stage: 'build') + create(:ci_build, :failed, pipeline: pipeline, stage: 'build') - expect { request_build_stage(retried: true) }.not_to exceed_query_limit(control_count) + expect { request_build_stage(retried: true) }.not_to exceed_all_query_limit(control_count) expect(response).to have_gitlab_http_status(:ok) end |