Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/api/commits_spec.rb')
-rw-r--r--spec/requests/api/commits_spec.rb36
1 files changed, 33 insertions, 3 deletions
diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb
index de2cfb8fea0..ac3aa808f37 100644
--- a/spec/requests/api/commits_spec.rb
+++ b/spec/requests/api/commits_spec.rb
@@ -1439,6 +1439,22 @@ RSpec.describe API::Commits do
it_behaves_like 'ref comments'
end
end
+
+ context 'multiple notes' do
+ let!(:note) { create(:diff_note_on_commit, project: project) }
+ let(:commit) { note.commit }
+ let(:commit_id) { note.commit_id }
+
+ it 'are returned without N + 1' do
+ get api(route, current_user) # warm up the cache
+
+ control_count = ActiveRecord::QueryRecorder.new { get api(route, current_user) }.count
+
+ create(:diff_note_on_commit, project: project, author: create(:user))
+
+ expect { get api(route, current_user) }.not_to exceed_query_limit(control_count)
+ end
+ end
end
context 'when the commit is present on two projects' do
@@ -1898,8 +1914,12 @@ RSpec.describe API::Commits do
let(:merged_mr) { create(:merge_request, source_project: project, source_branch: 'master', target_branch: 'feature') }
let(:commit) { merged_mr.merge_request_diff.commits.last }
- it 'returns the correct merge request' do
+ def perform_request(user)
get api("/projects/#{project.id}/repository/commits/#{commit.id}/merge_requests", user)
+ end
+
+ it 'returns the correct merge request' do
+ perform_request(user)
expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_limited_pagination_headers
@@ -1910,7 +1930,7 @@ RSpec.describe API::Commits do
it 'returns 403 for an unauthorized user' do
project.add_guest(user)
- get api("/projects/#{project.id}/repository/commits/#{commit.id}/merge_requests", user)
+ perform_request(user)
expect(response).to have_gitlab_http_status(:forbidden)
end
@@ -1926,11 +1946,21 @@ RSpec.describe API::Commits do
let(:non_member) { create(:user) }
it 'responds 403 when only members are allowed to read merge requests' do
- get api("/projects/#{project.id}/repository/commits/#{commit.id}/merge_requests", non_member)
+ perform_request(non_member)
expect(response).to have_gitlab_http_status(:forbidden)
end
end
+
+ it 'returns multiple merge requests without N + 1' do
+ perform_request(user)
+
+ control_count = ActiveRecord::QueryRecorder.new { perform_request(user) }.count
+
+ create(:merge_request, :closed, source_project: project, source_branch: 'master', target_branch: 'feature')
+
+ expect { perform_request(user) }.not_to exceed_query_limit(control_count)
+ end
end
describe 'GET /projects/:id/repository/commits/:sha/signature' do