Add QueryRecorder to Specs for EnvironmentsFolder and DashboardEnvironmentsSerializer

Add ActiveRecord::QueryRecorder.new on the specs for EnviromentsFolder and DashboardEnvironmentsSerializer.

See discussion at: !18353 (comment 229342541)

Problem to Solve

We need to understand the performance impacts of the current number of SQL queries registered on EnviromentsFolder and on DashboardEnvironmentsSerializer, to ensure future iterations respect this number, or even better they improve it.

Proposal

Add spec on DashboardEnviromentsSerializer and EnviornmentsFolder called ActiveRecord::QueryRecorder.new, something along the lines of:

describe 'number of queries' do
  subject { environment_folder.find_for_projects(projects) }

  context 'with one environment' do
    let(:projects) { [create(:project)] }

    before do
     # we create the data here 
    end

    it 'respects the expected number' do
      recorded = ActiveRecord::QueryRecorder.new { subject }
      expected_queries = X # number of queries so far

      expect(recorded.count).to eq(expected_queries) 
    end
  end

  context 'with 20 environments' do # Assuming we paginate environments in a future iteration and we default to 20 per page
    let(:projects) { create_list(:project, 20) }

    before do
     # we create the data here 
    end

    it 'respects the expected number' 
 end
end
Edited Sep 02, 2020 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading