|
|
|
@ -1,8 +1,10 @@ |
|
|
|
|
/* eslint-env mocha */ |
|
|
|
|
import 'babel-polyfill'; |
|
|
|
|
import assert from 'assert'; |
|
|
|
|
import s from 'underscore.string'; |
|
|
|
|
import './client.mocks.js'; |
|
|
|
|
import { original } from '../lib/parser/original/original'; |
|
|
|
|
import { Markdown } from '../lib/markdown'; |
|
|
|
|
// import {marked} from '../parser/marked/marked';
|
|
|
|
|
|
|
|
|
|
const wrapper = (text, tag) => `<span class="copyonly">${ tag }</span>${ text }<span class="copyonly">${ tag }</span>`; |
|
|
|
@ -11,7 +13,7 @@ const italicWrapper = (text) => wrapper(`<em>${ text }</em>`, '_'); |
|
|
|
|
const strikeWrapper = (text) => wrapper(`<strike>${ text }</strike>`, '~'); |
|
|
|
|
const headerWrapper = (text, level) => `<h${ level }>${ text }</h${ level }>`; |
|
|
|
|
const quoteWrapper = (text) => `<blockquote class="background-transparent-darker-before"><span class="copyonly">></span>${ text }</blockquote>`; |
|
|
|
|
const linkWrapped = (link, title) => `<a href="${ link }" target="_blank" rel="noopener noreferrer">${ title }</a>`; |
|
|
|
|
const linkWrapped = (link, title) => `<a href="${ s.escapeHTML(link) }" target="_blank" rel="noopener noreferrer">${ s.escapeHTML(title) }</a>`; |
|
|
|
|
const inlinecodeWrapper = (text) => wrapper(`<span><code class="code-colors inline">${ text }</code></span>`, '`'); |
|
|
|
|
const codeWrapper = (text, lang) => `<pre><code class='code-colors hljs ${ lang }'><span class='copyonly'>\`\`\`<br></span>${ text }<span class='copyonly'><br>\`\`\`</span></code></pre>`; |
|
|
|
|
|
|
|
|
@ -121,62 +123,62 @@ const headersLevel4 = { |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const quote = { |
|
|
|
|
'>Hello': quoteWrapper('Hello'), |
|
|
|
|
'>Rocket.Cat': quoteWrapper('Rocket.Cat'), |
|
|
|
|
'>Hi': quoteWrapper('Hi'), |
|
|
|
|
'> Hello this is dog': quoteWrapper(' Hello this is dog'), |
|
|
|
|
'> Rocket cat says Hello': quoteWrapper(' Rocket cat says Hello'), |
|
|
|
|
'> He said Hello to her': quoteWrapper(' He said Hello to her'), |
|
|
|
|
'> He said Hello to her ': quoteWrapper(' He said Hello to her '), |
|
|
|
|
'<Hello': '<Hello', |
|
|
|
|
'<Rocket.Cat>': '<Rocket.Cat>', |
|
|
|
|
' >Hi': ' >Hi', |
|
|
|
|
'Hello > this is dog': 'Hello > this is dog', |
|
|
|
|
'Roc>ket cat says Hello': 'Roc>ket cat says Hello', |
|
|
|
|
'He said Hello to her>': 'He said Hello to her>', |
|
|
|
|
'>Hello': '>Hello', |
|
|
|
|
'>Rocket.Cat': '>Rocket.Cat', |
|
|
|
|
'>Hi': '>Hi', |
|
|
|
|
'> Hello this is dog': '> Hello this is dog', |
|
|
|
|
'> Rocket cat says Hello': '> Rocket cat says Hello', |
|
|
|
|
'> He said Hello to her': '> He said Hello to her', |
|
|
|
|
'<Hello': '<Hello', |
|
|
|
|
'<Rocket.Cat>': '<Rocket.Cat>', |
|
|
|
|
' >Hi': ' >Hi', |
|
|
|
|
'Hello > this is dog': 'Hello > this is dog', |
|
|
|
|
'Roc>ket cat says Hello': 'Roc>ket cat says Hello', |
|
|
|
|
'He said Hello to her>': 'He said Hello to her>', |
|
|
|
|
'>Hello': s.escapeHTML('>Hello'), |
|
|
|
|
'>Rocket.Cat': s.escapeHTML('>Rocket.Cat'), |
|
|
|
|
'>Hi': s.escapeHTML('>Hi'), |
|
|
|
|
'> Hello this is dog': s.escapeHTML('> Hello this is dog'), |
|
|
|
|
'> Rocket cat says Hello': s.escapeHTML('> Rocket cat says Hello'), |
|
|
|
|
'> He said Hello to her': s.escapeHTML('> He said Hello to her'), |
|
|
|
|
'> He said Hello to her ': s.escapeHTML('> He said Hello to her '), |
|
|
|
|
'<Hello': s.escapeHTML('<Hello'), |
|
|
|
|
'<Rocket.Cat>': s.escapeHTML('<Rocket.Cat>'), |
|
|
|
|
' >Hi': s.escapeHTML(' >Hi'), |
|
|
|
|
'Hello > this is dog': s.escapeHTML('Hello > this is dog'), |
|
|
|
|
'Roc>ket cat says Hello': s.escapeHTML('Roc>ket cat says Hello'), |
|
|
|
|
'He said Hello to her>': s.escapeHTML('He said Hello to her>'), |
|
|
|
|
'>Hello': quoteWrapper('Hello'), |
|
|
|
|
'>Rocket.Cat': quoteWrapper('Rocket.Cat'), |
|
|
|
|
'>Hi': quoteWrapper('Hi'), |
|
|
|
|
'> Hello this is dog': quoteWrapper(' Hello this is dog'), |
|
|
|
|
'> Rocket cat says Hello': quoteWrapper(' Rocket cat says Hello'), |
|
|
|
|
'> He said Hello to her': quoteWrapper(' He said Hello to her'), |
|
|
|
|
'<Hello': s.escapeHTML('<Hello'), |
|
|
|
|
'<Rocket.Cat>': s.escapeHTML('<Rocket.Cat>'), |
|
|
|
|
' >Hi': s.escapeHTML(' >Hi'), |
|
|
|
|
'Hello > this is dog': s.escapeHTML('Hello > this is dog'), |
|
|
|
|
'Roc>ket cat says Hello': s.escapeHTML('Roc>ket cat says Hello'), |
|
|
|
|
'He said Hello to her>': s.escapeHTML('He said Hello to her>'), |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const link = { |
|
|
|
|
'<http://link|Text>': linkWrapped('http://link', 'Text'), |
|
|
|
|
'<https://open.rocket.chat/|Open Site For Rocket.Chat>': linkWrapped('https://open.rocket.chat/', 'Open Site For Rocket.Chat'), |
|
|
|
|
'<https://open.rocket.chat/ | Open Site For Rocket.Chat>': linkWrapped('https://open.rocket.chat/ ', ' Open Site For Rocket.Chat'), |
|
|
|
|
'<https://rocket.chat/|Rocket.Chat Site>': linkWrapped('https://rocket.chat/', 'Rocket.Chat Site'), |
|
|
|
|
'<https://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': linkWrapped('https://rocket.chat/docs/developer-guides/testing/#testing', 'Testing Entry on Rocket.Chat Docs Site'), |
|
|
|
|
'<http://linkText>': '<http://linkText>', |
|
|
|
|
'<https:open.rocket.chat/ | Open Site For Rocket.Chat>': '<https:open.rocket.chat/ | Open Site For Rocket.Chat>', |
|
|
|
|
'https://open.rocket.chat/|Open Site For Rocket.Chat': 'https://open.rocket.chat/|Open Site For Rocket.Chat', |
|
|
|
|
'<www.open.rocket.chat/|Open Site For Rocket.Chat>': '<www.open.rocket.chat/|Open Site For Rocket.Chat>', |
|
|
|
|
'<htps://rocket.chat/|Rocket.Chat Site>': '<htps://rocket.chat/|Rocket.Chat Site>', |
|
|
|
|
'<ttps://rocket.chat/|Rocket.Chat Site>': '<ttps://rocket.chat/|Rocket.Chat Site>', |
|
|
|
|
'<tps://rocket.chat/|Rocket.Chat Site>': '<tps://rocket.chat/|Rocket.Chat Site>', |
|
|
|
|
'<open.rocket.chat/|Open Site For Rocket.Chat>': '<open.rocket.chat/|Open Site For Rocket.Chat>', |
|
|
|
|
'<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': '<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>', |
|
|
|
|
'<http://link|Text>': s.escapeHTML('<http://link|Text>'), |
|
|
|
|
'<https://open.rocket.chat/|Open Site For Rocket.Chat>': s.escapeHTML('<https://open.rocket.chat/|Open Site For Rocket.Chat>'), |
|
|
|
|
'<https://open.rocket.chat/ | Open Site For Rocket.Chat>': s.escapeHTML('<https://open.rocket.chat/ | Open Site For Rocket.Chat>'), |
|
|
|
|
'<https://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<https://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<https://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': s.escapeHTML('<https://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>'), |
|
|
|
|
'<http://linkText>': s.escapeHTML('<http://linkText>'), |
|
|
|
|
'<https:open.rocket.chat/ | Open Site For Rocket.Chat>': s.escapeHTML('<https:open.rocket.chat/ | Open Site For Rocket.Chat>'), |
|
|
|
|
'https://open.rocket.chat/|Open Site For Rocket.Chat': s.escapeHTML('https://open.rocket.chat/|Open Site For Rocket.Chat'), |
|
|
|
|
'<www.open.rocket.chat/|Open Site For Rocket.Chat>': s.escapeHTML('<www.open.rocket.chat/|Open Site For Rocket.Chat>'), |
|
|
|
|
'<htps://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<htps://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<ttps://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<ttps://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<tps://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<tps://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<open.rocket.chat/|Open Site For Rocket.Chat>': s.escapeHTML('<open.rocket.chat/|Open Site For Rocket.Chat>'), |
|
|
|
|
'<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': s.escapeHTML('<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>'), |
|
|
|
|
|
|
|
|
|
'<http://link|Text>': linkWrapped('http://link', 'Text'), |
|
|
|
|
'<https://open.rocket.chat/|Open Site For Rocket.Chat>': linkWrapped('https://open.rocket.chat/', 'Open Site For Rocket.Chat'), |
|
|
|
|
'<https://open.rocket.chat/ | Open Site For Rocket.Chat>': linkWrapped('https://open.rocket.chat/ ', ' Open Site For Rocket.Chat'), |
|
|
|
|
'<https://rocket.chat/|Rocket.Chat Site>': linkWrapped('https://rocket.chat/', 'Rocket.Chat Site'), |
|
|
|
|
'<https://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': linkWrapped('https://rocket.chat/docs/developer-guides/testing/#testing', 'Testing Entry on Rocket.Chat Docs Site'), |
|
|
|
|
'<http://linkText>': '<http://linkText>', |
|
|
|
|
'<https:open.rocket.chat/ | Open Site For Rocket.Chat>': '<https:open.rocket.chat/ | Open Site For Rocket.Chat>', |
|
|
|
|
'<www.open.rocket.chat/|Open Site For Rocket.Chat>': '<www.open.rocket.chat/|Open Site For Rocket.Chat>', |
|
|
|
|
'<htps://rocket.chat/|Rocket.Chat Site>': '<htps://rocket.chat/|Rocket.Chat Site>', |
|
|
|
|
'<ttps://rocket.chat/|Rocket.Chat Site>': '<ttps://rocket.chat/|Rocket.Chat Site>', |
|
|
|
|
'<tps://rocket.chat/|Rocket.Chat Site>': '<tps://rocket.chat/|Rocket.Chat Site>', |
|
|
|
|
'<open.rocket.chat/|Open Site For Rocket.Chat>': '<open.rocket.chat/|Open Site For Rocket.Chat>', |
|
|
|
|
'<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': '<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>', |
|
|
|
|
'<http://linkText>': s.escapeHTML('<http://linkText>'), |
|
|
|
|
'<https:open.rocket.chat/ | Open Site For Rocket.Chat>': s.escapeHTML('<https:open.rocket.chat/ | Open Site For Rocket.Chat>'), |
|
|
|
|
'<www.open.rocket.chat/|Open Site For Rocket.Chat>': s.escapeHTML('<www.open.rocket.chat/|Open Site For Rocket.Chat>'), |
|
|
|
|
'<htps://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<htps://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<ttps://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<ttps://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<tps://rocket.chat/|Rocket.Chat Site>': s.escapeHTML('<tps://rocket.chat/|Rocket.Chat Site>'), |
|
|
|
|
'<open.rocket.chat/|Open Site For Rocket.Chat>': s.escapeHTML('<open.rocket.chat/|Open Site For Rocket.Chat>'), |
|
|
|
|
'<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>': s.escapeHTML('<htts://rocket.chat/docs/developer-guides/testing/#testing|Testing Entry on Rocket.Chat Docs Site>'), |
|
|
|
|
|
|
|
|
|
'[Text](http://link)': linkWrapped('http://link', 'Text'), |
|
|
|
|
'[Open Site For Rocket.Chat](https://open.rocket.chat/)': linkWrapped('https://open.rocket.chat/', 'Open Site For Rocket.Chat'), |
|
|
|
@ -219,15 +221,19 @@ const code = { |
|
|
|
|
'```__code__```': codeWrapper('<span class="hljs-strong">__code__</span>', 'markdown'), |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const nested = { |
|
|
|
|
'> some quote\n`window.location.reload();`': `${ quoteWrapper(' some quote') }${ inlinecodeWrapper('window.location.reload();') }`, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const defaultObjectTest = (result, object, objectKey) => assert.equal(result.html, object[objectKey]); |
|
|
|
|
|
|
|
|
|
const testObject = (object, parser = original, test = defaultObjectTest) => { |
|
|
|
|
Object.keys(object).forEach((objectKey) => { |
|
|
|
|
describe(objectKey, () => { |
|
|
|
|
const result = parser({ html: objectKey }); |
|
|
|
|
result.tokens.forEach((token) => { |
|
|
|
|
result.html = result.html.replace(token.token, token.text); |
|
|
|
|
}); |
|
|
|
|
const message = { |
|
|
|
|
html: s.escapeHTML(objectKey), |
|
|
|
|
}; |
|
|
|
|
const result = Markdown.mountTokensBack(parser(message)); |
|
|
|
|
it(`should be equal to ${ object[objectKey] }`, () => { |
|
|
|
|
test(result, object, objectKey); |
|
|
|
|
}); |
|
|
|
@ -259,6 +265,8 @@ describe('Original', function() { |
|
|
|
|
describe('Inline Code', () => testObject(inlinecode)); |
|
|
|
|
|
|
|
|
|
describe('Code', () => testObject(code)); |
|
|
|
|
|
|
|
|
|
describe('Nested', () => testObject(nested)); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// describe.only('Marked', function() {
|
|
|
|
|