require 'rails_helper' describe SuperscriptRenderer do let(:renderer) { described_class.new } def render_markdown(markdown) doc = CommonMarker.render_doc(markdown, :DEFAULT) renderer.render(doc) end describe '#text' do it 'converts text wrapped in ^ to superscript' do markdown = 'This is an example of a superscript: ^superscript^.' expect(render_markdown(markdown)).to include('superscript') end it 'does not convert text not wrapped in ^' do markdown = 'This is an example without superscript.' expect(render_markdown(markdown)).not_to include('') end it 'converts multiple superscripts in the same text' do markdown = 'This is an example with ^multiple^ ^superscripts^.' rendered_html = render_markdown(markdown) expect(rendered_html.scan('').length).to eq(2) expect(rendered_html).to include('multiple') expect(rendered_html).to include('superscripts') end end describe 'broken ^ usage' do it 'does not convert text that only starts with ^' do markdown = 'This is an example with ^broken superscript.' expected_output = '

This is an example with ^broken superscript.

' expect(render_markdown(markdown)).to include(expected_output) end it 'does not convert text that only ends with ^' do markdown = 'This is an example with broken^ superscript.' expected_output = '

This is an example with broken^ superscript.

' expect(render_markdown(markdown)).to include(expected_output) end it 'does not convert text with uneven numbers of ^' do markdown = 'This is an example with ^broken^ superscript^.' expected_output = '

This is an example with broken superscript^.

' expect(render_markdown(markdown)).to include(expected_output) end end end