summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/wikis_controller_spec.rb
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-07-21 23:48:12 -0700
committerStan Hu <stanhu@gmail.com>2018-07-24 15:36:31 -0700
commitc8ff6b7c73ccf42e70f7fd4675dd7f68d03739c1 (patch)
tree9a12252e2d2b6b1e0ce55df26f63eeed31a3452c /spec/controllers/projects/wikis_controller_spec.rb
parentc06e2ac888fb5180cdf133df89d03b99eceafa0d (diff)
downloadgitlab-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.rb37
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