diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-24 15:06:20 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-24 15:06:20 +0300 |
commit | 9c8edcd6163f03b5ffe3af3c8fbe0706e80c4306 (patch) | |
tree | 3acfff342020d2c5e18da300b9292318bdb3aefe /spec/lib/banzai | |
parent | bc89882970d6a14b1f72eb9c715fae90b26d066c (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/banzai')
-rw-r--r-- | spec/lib/banzai/filter/relative_link_filter_spec.rb | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/spec/lib/banzai/filter/relative_link_filter_spec.rb b/spec/lib/banzai/filter/relative_link_filter_spec.rb index f8b3748c663..8e55f12ddc5 100644 --- a/spec/lib/banzai/filter/relative_link_filter_spec.rb +++ b/spec/lib/banzai/filter/relative_link_filter_spec.rb @@ -3,6 +3,9 @@ require 'spec_helper' describe Banzai::Filter::RelativeLinkFilter do + include GitHelpers + include RepoHelpers + def filter(doc, contexts = {}) contexts.reverse_merge!({ commit: commit, @@ -34,6 +37,12 @@ describe Banzai::Filter::RelativeLinkFilter do %(<div>#{element}</div>) end + def allow_gitaly_n_plus_1 + Gitlab::GitalyClient.allow_n_plus_1_calls do + yield + end + end + let(:project) { create(:project, :repository, :public) } let(:user) { create(:user) } let(:group) { nil } @@ -44,6 +53,19 @@ describe Banzai::Filter::RelativeLinkFilter do let(:requested_path) { '/' } let(:only_path) { true } + it 'does not trigger a gitaly n+1', :request_store do + raw_doc = "" + + allow_gitaly_n_plus_1 do + 30.times do |i| + create_file_in_repo(project, ref, ref, "new_file_#{i}", "x" ) + raw_doc += link("new_file_#{i}") + end + end + + expect { filter(raw_doc) }.to change { Gitlab::GitalyClient.get_request_count }.by(2) + end + shared_examples :preserve_unchanged do it 'does not modify any relative URL in anchor' do doc = filter(link('README.md')) @@ -244,7 +266,8 @@ describe Banzai::Filter::RelativeLinkFilter do end context 'when ref name contains special chars' do - let(:ref) {'mark#\'@],+;-._/#@!$&()+down'} + let(:ref) { 'mark#\'@],+;-._/#@!$&()+down' } + let(:path) { 'files/images/logo-black.png' } it 'correctly escapes the ref' do # Addressable won't escape the '#', so we do this manually @@ -252,8 +275,9 @@ describe Banzai::Filter::RelativeLinkFilter do # Stub this method so the branch doesn't actually need to be in the repo allow_any_instance_of(described_class).to receive(:uri_type).and_return(:raw) + allow_any_instance_of(described_class).to receive(:get_uri_types).and_return({ path: :tree }) - doc = filter(link('files/images/logo-black.png')) + doc = filter(link(path)) expect(doc.at_css('a')['href']) .to eq "/#{project_path}/raw/#{ref_escaped}/files/images/logo-black.png" |