const renderMarkdownFactory = require('./renderMarkdown');
describe('rho: renderMarkdown service', () => {
let renderMarkdown;
beforeEach(() => {
renderMarkdown = renderMarkdownFactory();
});
it('should convert markdown to HTML', () => {
const content = '# heading 1\n' +
'\n' +
'A paragraph with **bold** and _italic_.\n' +
'\n' +
'* List item 1\n' +
'* List item 2';
const output = renderMarkdown(content);
expect(output).toEqual(
'
heading 1
\n' +
'A paragraph with bold and italic.
\n' +
'\n' +
' - List item 1
\n' +
' - List item 2
\n' +
'
');
});
it('should not process markdown inside inline tags', () => {
const content = '# heading {@link some_url_path}';
const output = renderMarkdown(content);
expect(output).toEqual('heading {@link some_url_path}
');
});
it('should not put block level inline tags inside paragraphs', () => {
const content = 'A paragraph.\n' +
'\n' +
'{@example blah **blah** blah }\n' +
'\n' +
'Another paragraph';
const output = renderMarkdown(content);
expect(output).toEqual(
'A paragraph.
\n' +
'{@example blah **blah** blah }
\n' +
'Another paragraph
');
});
it('should not format the contents of tags marked as unformatted ', () => {
renderMarkdown.unformattedTags = ['code-example'];
const content = '\n abc\n def\n';
const output = renderMarkdown(content);
expect(output).toEqual('\n abc\n def\n');
});
it('should not remove spaces after anchor tags', () => {
var input =
'A aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa aaaaaaaaaaa\n' +
'[foo](path/to/foo) bbb.';
var output =
'' +
'A aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa aaaaaaaaaaa\n' +
'foo bbb.' +
'
';
expect(renderMarkdown(input)).toEqual(output);
});
});