resources/asciidoctor/spec/elastic_compat_tree_processor_spec.rb (115 lines of code) (raw):
# frozen_string_literal: true
require 'elastic_compat_tree_processor/extension'
require 'lang_override/extension'
RSpec.describe ElasticCompatTreeProcessor do
before(:each) do
Asciidoctor::Extensions.register do
treeprocessor ElasticCompatTreeProcessor
block_macro LangOverride
end
end
after(:each) do
Asciidoctor::Extensions.unregister_all
end
include_context 'convert without logs'
context 'when there are listings with `specialcharacters`' do
let(:input) do
<<~ASCIIDOC
["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
List<CategoryDefinition> categories = response.categories();
--------------------------------------------------
ASCIIDOC
end
it 'processes specialcharacters anyway' do
expect(converted).to include('List<CategoryDefinition> categories')
end
end
context 'when there is a definition list without a definition' do
let(:input) do
<<~ASCIIDOC
`thing1`::
def1
`thing2`::
ASCIIDOC
end
it 'successfully converts the text anyway' do
expect(converted).to include <<~HTML
<dt class="hdlist1"><code>thing2</code></dt>
HTML
end
end
shared_examples 'snippet language' do |override, lang|
name = override ? " the #{override} lang override" : 'out a lang override'
context "for a snippet with#{name}" do
let(:snippet) do
snippet = <<~ASCIIDOC
[source,js]
----
GET / <1>
----
ASCIIDOC
snippet += "lang_override::[#{override}]" if override
snippet
end
shared_examples 'has the expected language' do
it "has the #{lang} language" do
expect(converted).to include <<~HTML.strip
<code class="language-#{lang}" data-lang="#{lang}">
HTML
end
end
context 'when it is alone' do
let(:input) do
<<~ASCIIDOC
== Example
#{snippet}
ASCIIDOC
end
include_examples 'has the expected language'
end
context 'when it is followed by a paragraph' do
let(:input) do
<<~ASCIIDOC
== Example
#{snippet}
Words words words.
ASCIIDOC
end
include_examples 'has the expected language'
it 'the paragraph is intact' do
expect(converted).to include <<~HTML
<p>Words words words.</p>
HTML
end
end
context 'when it is inside a definition list' do
let(:input) do
<<~ASCIIDOC
== Example
Term::
Definition
+
--
#{snippet}
--
ASCIIDOC
end
include_examples 'has the expected language'
end
context 'when it is followed by a callout list' do
let(:input) do
<<~ASCIIDOC
== Example
#{snippet}
<1> foo
ASCIIDOC
end
include_examples 'has the expected language'
it 'has a working callout list' do
expect(converted).to include 'GET / <b class="conum">(1)</b>'
end
end
end
end
include_examples 'snippet language', 'CONSOLE', 'console'
include_examples 'snippet language', 'AUTOSENSE', 'sense'
include_examples 'snippet language', 'KIBANA', 'kibana'
include_examples 'snippet language', 'SENSE:path/to/snippet.sense', 'sense'
include_examples 'snippet language', nil, 'js'
end