/* jshint -W117 */ const fs = require('fs'); const path = require('path'); const utils = require('./test_utils'); const dataDir = 'test_data'; const file = path.join(dataDir, 'test.md'); const config = { 'modules': { 'prism': true, }, 'showdown': { 'simplifiedAutoLink': true, 'smartIndentationFix': true } }; const renderer = require('../src/renderer')(config); beforeEach(() => { config['modules']['prism'] = true; utils.deleteFolderSync(dataDir); fs.mkdirSync(dataDir); }); afterAll(() => { if (fs.existsSync(dataDir)) { utils.deleteFolderSync(dataDir); } }); test('invalid file', (done) => { renderer.render('invalid file', (err, html) => { expect(err).not.toBeNull(); expect(html).not.toBeDefined(); done(); }); }); test('normal file', (done) => { fs.writeFileSync(file, `# Hello`); renderer.render(file, (err, html) => { expect(err).toBeNull(); expect(html).toBe('

Hello

'); done(); }); }); test('custom rules', (done) => { fs.writeFileSync(file, `www.google.com`); renderer.render(file, (err, html) => { expect(err).toBeNull(); expect(html).toBe('

www.google.com

'); done(); }); }); test('no prism', (done) => { config['modules']['prism'] = false; fs.writeFileSync(file, '```python\nprint("hello")\n```\n\n```python\nprint("hello")\n```'); renderer.render(file, (err, html) => { expect(err).toBeNull(); expect(html).toBe('
print("hello")\n
\n
print("hello")\n
'); done(); }); }); test('prism correct', (done) => { fs.writeFileSync(file, '```python\nprint("hello")\n```'); renderer.render(file, (err, html) => { expect(err).toBeNull(); expect(html).not.toBe('
print("hello")\n
'); expect(html.indexOf('
')).toBe(0);
    done();
  });
});

test('prism invalid lang', (done) => {
  fs.writeFileSync(file, '```pythdon\nprint("hello")\n```');
  renderer.render(file, (err, html) => {
    expect(err).toBeNull();
    expect(html).not.toBe('
print("hello")\n
'); expect(html.indexOf('
')).toBe(0);
    done();
  });
});

test('prism mutliple code blocks', (done) => {
  fs.writeFileSync(file, '```python\n\n```\n\n```python\n\n```');
  renderer.render(file, (err, html) => {
    expect(err).toBeNull();
    expect(html).toBe('
\n
'); done(); }); });