Skip to content
Snippets Groups Projects
Commit 28292d51 authored by Thong Kuah's avatar Thong Kuah 💬
Browse files

Merge branch '65988-optimize-snippet-listings' into 'master'

Optimize queries for snippet listings

See merge request gitlab-org/gitlab-ce!32576
parents bb7bbcf7 f1926b32
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -9,6 +9,15 @@ describe SnippetsController do
let(:user) { create(:user) }
 
context 'when username parameter is present' do
it_behaves_like 'paginated collection' do
let(:collection) { Snippet.all }
let(:params) { { username: user.username } }
before do
create(:personal_snippet, :public, author: user)
end
end
it 'renders snippets of a user when username is present' do
get :index, params: { username: user.username }
 
Loading
Loading
# frozen_string_literal: true
require 'spec_helper'
describe Gitlab::NoteableMetadata do
subject { Class.new { include Gitlab::NoteableMetadata }.new }
it 'returns an empty Hash if an empty collection is provided' do
expect(subject.noteable_meta_data(Snippet.none, 'Snippet')).to eq({})
end
it 'raises an error when given a collection with no limit' do
expect { subject.noteable_meta_data(Snippet.all, 'Snippet') }.to raise_error(/must have a limit/)
end
context 'snippets' do
let!(:snippet) { create(:personal_snippet) }
let!(:other_snippet) { create(:personal_snippet) }
let!(:note) { create(:note, noteable: snippet) }
it 'aggregates stats on snippets' do
data = subject.noteable_meta_data(Snippet.all.limit(10), 'Snippet')
expect(data.count).to eq(2)
expect(data[snippet.id].user_notes_count).to eq(1)
expect(data[other_snippet.id].user_notes_count).to eq(0)
end
end
end
# frozen_string_literal: true
require 'spec_helper'
shared_examples 'paginated collection' do
let(:collection) { nil }
let(:last_page) { collection.page.total_pages }
let(:action) { :index }
let(:params) { {} }
it 'renders a page number that is not ouf of range' do
get action, params: params.merge(page: last_page)
expect(response).to have_gitlab_http_status(200)
end
it 'redirects to last_page if page number is larger than number of pages' do
get action, params: params.merge(page: last_page + 1)
expect(response).to redirect_to(params.merge(page: last_page))
end
it 'does not redirect to external sites when provided a host field' do
external_host = 'www.example.com'
get action, params: params.merge(page: last_page + 1, host: external_host)
expect(response).to redirect_to(params.merge(page: last_page))
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment