From 4f83ef5a370bdae2b94f3fba963a100a68381dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarka=20Kadlecova=CC=81?= Date: Mon, 15 Jan 2018 13:06:42 +0100 Subject: Avoid N+1 queries when fetching events from the API --- spec/requests/api/events_spec.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'spec/requests/api') diff --git a/spec/requests/api/events_spec.rb b/spec/requests/api/events_spec.rb index 962c845f36d..6696fb69273 100644 --- a/spec/requests/api/events_spec.rb +++ b/spec/requests/api/events_spec.rb @@ -160,6 +160,24 @@ describe API::Events do expect(json_response.size).to eq(1) end + it 'does not perform N+1 queries' do + endpoint = api("/projects/#{private_project.id}/events?action=closed", user) + + issue = create(:issue, project: private_project) + note = create(:note, project: private_project, noteable: issue) + create(:event, project:private_project, target: note, action: Event::CLOSED) + + control_count = ActiveRecord::QueryRecorder.new { get endpoint }.count + + issues = create_list(:issue, 5, project: private_project) + issues.each do |issue| + note = create(:note, project: private_project, noteable: issue) + create(:event, project:private_project, target: note, action: Event::CLOSED) + end + + expect { get endpoint }.not_to exceed_query_limit(control_count) + end + it 'returns 404 if project does not exist' do get api("/projects/1234/events", user) -- cgit v1.2.1