summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/jobs_controller_spec.rb
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2019-06-19 11:18:04 +0200
committerKamil Trzciński <ayufan@ayufan.eu>2019-06-19 12:23:05 +0200
commit3f543cd2c93d987723d51d629000b5550eb59636 (patch)
treef39d5b2261ee9b3cddc8ab9ce9d35eb0b4a95fae /spec/controllers/projects/jobs_controller_spec.rb
parent8b55aaee33403c60fefe53a7e58a398c50019388 (diff)
downloadgitlab-ce-3f543cd2c93d987723d51d629000b5550eb59636.tar.gz
Fix N+1 problem in `JobsController#index`fix-jobs-controller-index-n-1
This adds missing preloads, and introduces additional n+1 matcher to look for duplicates.
Diffstat (limited to 'spec/controllers/projects/jobs_controller_spec.rb')
-rw-r--r--spec/controllers/projects/jobs_controller_spec.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb
index 0dabe27977a..901402aa5fd 100644
--- a/spec/controllers/projects/jobs_controller_spec.rb
+++ b/spec/controllers/projects/jobs_controller_spec.rb
@@ -73,21 +73,27 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
end
context 'number of queries' do
+ render_views
+
before do
Ci::Build::AVAILABLE_STATUSES.each do |status|
create_job(status, status)
end
+
+ allow(Appearance).to receive(:current_without_cache)
+ .and_return(nil)
end
it 'verifies number of queries', :request_store do
- recorded = ActiveRecord::QueryRecorder.new { get_index }
- expect(recorded.count).to be_within(5).of(7)
+ expect { get_index }.not_to be_n_plus_1_query.with_threshold(3)
end
def create_job(name, status)
- pipeline = create(:ci_pipeline, project: project)
+ user = create(:user)
+ pipeline = create(:ci_pipeline, project: project, user: user)
create(:ci_build, :tags, :triggered, :artifacts,
- pipeline: pipeline, name: name, status: status)
+ pipeline: pipeline, name: name, status: status,
+ user: user)
end
end