diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2019-06-19 12:18:04 +0300 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2019-06-19 13:23:05 +0300 |
commit | 3f543cd2c93d987723d51d629000b5550eb59636 (patch) | |
tree | f39d5b2261ee9b3cddc8ab9ce9d35eb0b4a95fae /spec/controllers | |
parent | 8b55aaee33403c60fefe53a7e58a398c50019388 (diff) |
Fix N+1 problem in `JobsController#index`
This adds missing preloads, and introduces
additional n+1 matcher to look for
duplicates.
Diffstat (limited to 'spec/controllers')
-rw-r--r-- | spec/controllers/projects/jobs_controller_spec.rb | 14 |
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 |