Commit 82bc6c62 authored by Robert Speicher's avatar Robert Speicher

Add a spec for WikiPipeline

Removes the specs from GollumTagsFilter that were more like integration
tests for the pipeline than unit tests of the filter.
parent 6aa50165
...@@ -88,54 +88,17 @@ describe Banzai::Filter::GollumTagsFilter, lib: true do ...@@ -88,54 +88,17 @@ describe Banzai::Filter::GollumTagsFilter, lib: true do
end end
context 'table of contents' do context 'table of contents' do
let(:pipeline) { Banzai::Pipeline[:wiki] } it 'replaces [[<em>TOC</em>]] with ToC result' do
doc = described_class.call("<p>[[<em>TOC</em>]]</p>", { project_wiki: project_wiki }, { toc: "FOO" })
it 'replaces the tag with the TableOfContentsFilter result' do expect(doc.to_html).to eq("FOO")
markdown = <<-MD.strip_heredoc
[[_TOC_]]
## Header
Foo
MD
result = pipeline.call(markdown, project_wiki: project_wiki, project: project)
aggregate_failures do
expect(result[:output].text).not_to include '[[_TOC_]]'
expect(result[:output].text).not_to include '[['
expect(result[:output].to_html).to include(result[:toc])
end
end
it 'is case-sensitive' do
markdown = <<-MD.strip_heredoc
[[_toc_]]
# Header 1
Foo
MD
output = pipeline.to_html(markdown, project_wiki: project_wiki, project: project)
expect(output).to include('[[<em>toc</em>]]')
end end
it 'handles an empty pipeline result' do it 'handles an empty ToC result' do
# No Markdown headers in this doc, so `result[:toc]` will be empty input = output = "<p>[[<em>TOC</em>]]</p>"
markdown = <<-MD.strip_heredoc doc = described_class.call(input, project_wiki: project_wiki)
[[_TOC_]]
Foo
MD
output = pipeline.to_html(markdown, project_wiki: project_wiki, project: project)
aggregate_failures do expect(doc.to_html).to eq output
expect(output).not_to include('<ul>')
expect(output).to include('[[<em>TOC</em>]]')
end
end end
end end
end end
require 'rails_helper'
describe Banzai::Pipeline::WikiPipeline do
describe 'TableOfContents' do
it 'replaces the tag with the TableOfContentsFilter result' do
markdown = <<-MD.strip_heredoc
[[_TOC_]]
## Header
Foo
MD
result = described_class.call(markdown, project: spy, project_wiki: double)
aggregate_failures do
expect(result[:output].text).not_to include '[['
expect(result[:output].text).not_to include 'TOC'
expect(result[:output].to_html).to include(result[:toc])
end
end
it 'is case-sensitive' do
markdown = <<-MD.strip_heredoc
[[_toc_]]
# Header 1
Foo
MD
output = described_class.to_html(markdown, project: spy, project_wiki: double)
expect(output).to include('[[<em>toc</em>]]')
end
it 'handles an empty pipeline result' do
# No Markdown headers in this doc, so `result[:toc]` will be empty
markdown = <<-MD.strip_heredoc
[[_TOC_]]
Foo
MD
output = described_class.to_html(markdown, project: spy, project_wiki: double)
aggregate_failures do
expect(output).not_to include('<ul>')
expect(output).to include('[[<em>TOC</em>]]')
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment