diff options
author | Stan Hu <stanhu@gmail.com> | 2018-07-21 23:48:12 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-07-24 15:36:31 -0700 |
commit | c8ff6b7c73ccf42e70f7fd4675dd7f68d03739c1 (patch) | |
tree | 9a12252e2d2b6b1e0ce55df26f63eeed31a3452c /spec/controllers/projects/wikis_controller_spec.rb | |
parent | c06e2ac888fb5180cdf133df89d03b99eceafa0d (diff) | |
download | gitlab-ce-c8ff6b7c73ccf42e70f7fd4675dd7f68d03739c1.tar.gz |
Use limit parameter to retrieve Wikis from Gitalysh-use-wiki-limit-parameter-gitaly
Without this parameter, every load of a Wiki page will load all the Wiki pages
in the repository for the sidebar. This is a significant performance penalty
that can significant slow the display of all Wiki pages.
Relates to #40101
Diffstat (limited to 'spec/controllers/projects/wikis_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/wikis_controller_spec.rb | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb index 92addf30307..fed6677935e 100644 --- a/spec/controllers/projects/wikis_controller_spec.rb +++ b/spec/controllers/projects/wikis_controller_spec.rb @@ -1,8 +1,35 @@ require 'spec_helper' describe Projects::WikisController do - let(:project) { create(:project_empty_repo, :public) } + let(:project) { create(:project, :public, :repository) } let(:user) { create(:user) } + let(:wiki) { ProjectWiki.new(project, user) } + + describe 'GET #show' do + let(:wiki_title) { 'page-title-test' } + + render_views + + before do + create_page(wiki_title, 'hello world') + end + + it 'limits the retrieved pages for the sidebar' do + sign_in(user) + + expect(controller).to receive(:load_wiki).and_return(wiki) + + # empty? call + expect(wiki).to receive(:pages).with(limit: 1).and_call_original + # Sidebar entries + expect(wiki).to receive(:pages).with(limit: 15).and_call_original + + get :show, namespace_id: project.namespace, project_id: project, id: wiki_title + + expect(response).to have_http_status(:ok) + expect(response.body).to include(wiki_title) + end + end describe 'POST #preview_markdown' do it 'renders json in a correct format' do @@ -13,4 +40,12 @@ describe Projects::WikisController do expect(JSON.parse(response.body).keys).to match_array(%w(body references)) end end + + def create_page(name, content) + project.wiki.wiki.write_page(name, :markdown, content, commit_details(name)) + end + + def commit_details(name) + Gitlab::Git::Wiki::CommitDetails.new(user.id, user.username, user.name, user.email, "created page #{name}") + end end |