diff options
author | Stan Hu <stanhu@gmail.com> | 2018-07-11 23:19:20 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-07-12 01:00:15 -0700 |
commit | 081264f18682d7fa823f75737a919e05ea02fe04 (patch) | |
tree | a2f4e658e830e2bacfa6cbc6954a9f14e493dc34 /spec | |
parent | ba38931d90b6149e7bf1176dc5075b92a51466ae (diff) | |
download | gitlab-ce-081264f18682d7fa823f75737a919e05ea02fe04.tar.gz |
Optimize ProjectWiki#empty? check
The `empty?` check was iterating over all Wiki pages to determine
whether it was empty. Using the limit parameter allows us to bail
out early once we found a page.
Note that this currently only improves performance for GitLab 11.0
until https://gitlab.com/gitlab-org/gitaly/issues/1204 is fixed.
Relates to #40101
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/project_wiki_spec.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/spec/models/project_wiki_spec.rb b/spec/models/project_wiki_spec.rb index a3c20b3b3c1..a544940800a 100644 --- a/spec/models/project_wiki_spec.rb +++ b/spec/models/project_wiki_spec.rb @@ -1,3 +1,4 @@ +# coding: utf-8 require "spec_helper" describe ProjectWiki do @@ -10,7 +11,6 @@ describe ProjectWiki do subject { project_wiki } - it { is_expected.to delegate_method(:empty?).to :pages } it { is_expected.to delegate_method(:repository_storage).to :project } it { is_expected.to delegate_method(:hashed_storage?).to :project } @@ -92,11 +92,19 @@ describe ProjectWiki do context "when the wiki has pages" do before do project_wiki.create_page("index", "This is an awesome new Gollum Wiki") + project_wiki.create_page("another-page", "This is another page") end describe '#empty?' do subject { super().empty? } it { is_expected.to be_falsey } + + # Re-enable this when https://gitlab.com/gitlab-org/gitaly/issues/1204 is fixed + xit 'only instantiates a Wiki page once' do + expect(WikiPage).to receive(:new).once.and_call_original + + subject + end end end end |