diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-18 11:18:50 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-18 11:18:50 +0000 |
commit | 8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781 (patch) | |
tree | a77e7fe7a93de11213032ed4ab1f33a3db51b738 /spec/lib/banzai/pipeline | |
parent | 00b35af3db1abfe813a778f643dad221aad51fca (diff) | |
download | gitlab-ce-8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781.tar.gz |
Add latest changes from gitlab-org/gitlab@13-1-stable-ee
Diffstat (limited to 'spec/lib/banzai/pipeline')
-rw-r--r-- | spec/lib/banzai/pipeline/description_pipeline_spec.rb | 4 | ||||
-rw-r--r-- | spec/lib/banzai/pipeline/wiki_pipeline_spec.rb | 67 |
2 files changed, 34 insertions, 37 deletions
diff --git a/spec/lib/banzai/pipeline/description_pipeline_spec.rb b/spec/lib/banzai/pipeline/description_pipeline_spec.rb index 5ecd3df5151..6778a273bba 100644 --- a/spec/lib/banzai/pipeline/description_pipeline_spec.rb +++ b/spec/lib/banzai/pipeline/description_pipeline_spec.rb @@ -3,12 +3,14 @@ require 'spec_helper' describe Banzai::Pipeline::DescriptionPipeline do + let_it_be(:project) { create(:project) } + def parse(html) # When we pass HTML to Redcarpet, it gets wrapped in `p` tags... # ...except when we pass it pre-wrapped text. Rabble rabble. unwrap = !html.start_with?('<p ') - output = described_class.to_html(html, project: spy) + output = described_class.to_html(html, project: project) output.gsub!(%r{\A<p dir="auto">(.*)</p>(.*)\z}, '\1\2') if unwrap diff --git a/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb b/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb index 4d16c568c13..b2c24284eb9 100644 --- a/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb +++ b/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb @@ -3,6 +3,11 @@ require 'spec_helper' describe Banzai::Pipeline::WikiPipeline do + let_it_be(:namespace) { create(:namespace, name: "wiki_link_ns") } + let_it_be(:project) { create(:project, :public, name: "wiki_link_project", namespace: namespace) } + let_it_be(:wiki) { ProjectWiki.new(project, double(:user)) } + let_it_be(:page) { build(:wiki_page, wiki: wiki, title: 'nested/twice/start-page') } + describe 'TableOfContents' do it 'replaces the tag with the TableOfContentsFilter result' do markdown = <<-MD.strip_heredoc @@ -13,7 +18,7 @@ describe Banzai::Pipeline::WikiPipeline do Foo MD - result = described_class.call(markdown, project: spy, project_wiki: spy) + result = described_class.call(markdown, project: project, wiki: wiki) aggregate_failures do expect(result[:output].text).not_to include '[[' @@ -31,7 +36,7 @@ describe Banzai::Pipeline::WikiPipeline do Foo MD - output = described_class.to_html(markdown, project: spy, project_wiki: spy) + output = described_class.to_html(markdown, project: project, wiki: wiki) expect(output).to include('[[<em>toc</em>]]') end @@ -44,7 +49,7 @@ describe Banzai::Pipeline::WikiPipeline do Foo MD - output = described_class.to_html(markdown, project: spy, project_wiki: spy) + output = described_class.to_html(markdown, project: project, wiki: wiki) aggregate_failures do expect(output).not_to include('<ul>') @@ -54,30 +59,25 @@ describe Banzai::Pipeline::WikiPipeline do end describe "Links" do - let(:namespace) { create(:namespace, name: "wiki_link_ns") } - let(:project) { create(:project, :public, name: "wiki_link_project", namespace: namespace) } - let(:project_wiki) { ProjectWiki.new(project, double(:user)) } - let(:page) { build(:wiki_page, wiki: project_wiki, title: 'nested/twice/start-page') } - { 'when GitLab is hosted at a root URL' => '', 'when GitLab is hosted at a relative URL' => '/nested/relative/gitlab' }.each do |test_name, relative_url_root| context test_name do before do - allow(Gitlab.config.gitlab).to receive(:relative_url_root).and_return(relative_url_root) + allow(Rails.application.routes).to receive(:default_url_options).and_return(script_name: relative_url_root) end describe "linking to pages within the wiki" do context "when creating hierarchical links to the current directory" do it "rewrites non-file links to be at the scope of the current directory" do markdown = "[Page](./page)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/page\"") end it "rewrites file links to be at the scope of the current directory" do markdown = "[Link to Page](./page.md)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/page.md\"") end @@ -86,14 +86,14 @@ describe Banzai::Pipeline::WikiPipeline do context "when creating hierarchical links to the parent directory" do it "rewrites non-file links to be at the scope of the parent directory" do markdown = "[Link to Page](../page)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/page\"") end it "rewrites file links to be at the scope of the parent directory" do markdown = "[Link to Page](../page.md)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/page.md\"") end @@ -102,14 +102,14 @@ describe Banzai::Pipeline::WikiPipeline do context "when creating hierarchical links to a sub-directory" do it "rewrites non-file links to be at the scope of the sub-directory" do markdown = "[Link to Page](./subdirectory/page)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/subdirectory/page\"") end it "rewrites file links to be at the scope of the sub-directory" do markdown = "[Link to Page](./subdirectory/page.md)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/subdirectory/page.md\"") end @@ -118,35 +118,35 @@ describe Banzai::Pipeline::WikiPipeline do describe "when creating non-hierarchical links" do it 'rewrites non-file links to be at the scope of the wiki root' do markdown = "[Link to Page](page)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page\"") end it 'rewrites non-file links (with spaces) to be at the scope of the wiki root' do markdown = "[Link to Page](page slug)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page%20slug\"") end it "rewrites file links to be at the scope of the current directory" do markdown = "[Link to Page](page.md)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/page.md\"") end it 'rewrites links with anchor' do markdown = '[Link to Header](start-page#title)' - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/start-page#title\"") end it 'rewrites links (with spaces) with anchor' do markdown = '[Link to Header](start page#title)' - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/start%20page#title\"") end @@ -155,14 +155,14 @@ describe Banzai::Pipeline::WikiPipeline do describe "when creating root links" do it 'rewrites non-file links to be at the scope of the wiki root' do markdown = "[Link to Page](/page)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page\"") end it 'rewrites file links to be at the scope of the wiki root' do markdown = "[Link to Page](/page.md)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include("href=\"#{relative_url_root}/wiki_link_ns/wiki_link_project/-/wikis/page.md\"") end @@ -172,7 +172,7 @@ describe Banzai::Pipeline::WikiPipeline do describe "linking to pages outside the wiki (absolute)" do it "doesn't rewrite links" do markdown = "[Link to Page](http://example.com/page)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include('href="http://example.com/page"') end @@ -188,7 +188,7 @@ describe Banzai::Pipeline::WikiPipeline do output = described_class.to_html( "[Link](./alert(1);)", project: project, - project_wiki: project_wiki, + wiki: wiki, page_slug: valid_slug ) @@ -199,7 +199,7 @@ describe Banzai::Pipeline::WikiPipeline do output = described_class.to_html( "[Link](../alert(1);)", project: project, - project_wiki: project_wiki, + wiki: wiki, page_slug: valid_slug ) @@ -236,7 +236,7 @@ describe Banzai::Pipeline::WikiPipeline do output = described_class.to_html( "[Link](./#{link})", project: project, - project_wiki: project_wiki, + wiki: wiki, page_slug: slug ) @@ -247,7 +247,7 @@ describe Banzai::Pipeline::WikiPipeline do output = described_class.to_html( "[Link](../#{link})", project: project, - project_wiki: project_wiki, + wiki: wiki, page_slug: slug ) @@ -261,35 +261,30 @@ describe Banzai::Pipeline::WikiPipeline do end describe 'videos and audio' do - let_it_be(:namespace) { create(:namespace, name: "wiki_link_ns") } - let_it_be(:project) { create(:project, :public, name: "wiki_link_project", namespace: namespace) } - let_it_be(:project_wiki) { ProjectWiki.new(project, double(:user)) } - let_it_be(:page) { build(:wiki_page, wiki: project_wiki, title: 'nested/twice/start-page') } - it 'generates video html structure' do markdown = "![video_file](video_file_name.mp4)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include('<video src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/video_file_name.mp4"') end it 'rewrites and replaces video links names with white spaces to %20' do markdown = "![video file](video file name.mp4)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include('<video src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/video%20file%20name.mp4"') end it 'generates audio html structure' do markdown = "![audio_file](audio_file_name.wav)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include('<audio src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/audio_file_name.wav"') end it 'rewrites and replaces audio links names with white spaces to %20' do markdown = "![audio file](audio file name.wav)" - output = described_class.to_html(markdown, project: project, project_wiki: project_wiki, page_slug: page.slug) + output = described_class.to_html(markdown, project: project, wiki: wiki, page_slug: page.slug) expect(output).to include('<audio src="/wiki_link_ns/wiki_link_project/-/wikis/nested/twice/audio%20file%20name.wav"') end |