using Corefines::String::unindent describe DocTest::IO::XML do it_should_behave_like DocTest::IO::Base subject(:suite) { described_class.new(file_ext: '.html') } describe '#initialize' do it 'uses ".html" as default file_ext' do expect(suite.file_ext).to eq '.html' end end describe 'parsing/serialization:' do context 'one example' do shared_examples :example do let(:parsed) { suite.parse input, 's' } let(:serialized) { suite.serialize output } it { (expect parsed).to have(1).items } it 'returns an array with parsed example object' do (expect parsed.first).to eql output end it 'returns a serialized example as string' do (expect serialized).to eql input end end context 'with name only' do let(:input) { "\n" } let(:output) { create_example 's:basic' } include_examples :example end context 'with multiline content' do let :content do <<-EOF.unindent
Paragraphs don't require any special markup.
To begin a new one, separate it by blank line.
EOF end let(:input) { "\n#{content}" } let(:output) { create_example 's:multiline', content: content.chomp } include_examples :example end context 'with description' do let :input do <<-EOF.unindent allons-y! EOF end let :output do create_example 's:strong', content: 'allons-y!', desc: "This is a description,\nsee?" end include_examples :example end context 'with options' do let :input do <<-EOF.unindentdummy
EOF end let :output do create_example 's:basic', content: 'dummy
', opts: { exclude: ['.//code', './/section'], include: ['./p/node()'], header_footer: true } end include_examples :example end context 'with description and options' do let :input do <<-EOF.unindent EOF end let :output do create_example 's:basic', desc: 'This is a description.', opts: { exclude: ['.//code'] } end include_examples :example end end context 'multiple examples' do let :input do <<-EOF.unindent http://asciidoctor.org Refer to <