The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/packages/message-parser/tests/emphasisWithEmoticons.test.ts

58 lines
3.1 KiB

import { parse } from '../src';
import { paragraph, plain, bold, italic, emoticon } from '../src/utils';
test.each([
['*test:*', [paragraph([bold([plain('test:')])])]],
['_test:_', [paragraph([italic([plain('test:')])])]],
[
// :* is an emoticon, but it shouldn't be parsed as one if its glued to a word
'*bold ending with colon:*',
[paragraph([bold([plain('bold ending with colon:')])])],
],
['*bold ending with colon:* and some more text', [paragraph([bold([plain('bold ending with colon:')]), plain(' and some more text')])]],
['*bold ending with colon :*and some more text', [paragraph([bold([plain('bold ending with colon :')]), plain('and some more text')])]],
[
'*bold with a kissing emoji :* *',
[paragraph([bold([plain('bold with a kissing emoji '), emoticon(':*', 'kissing_heart'), plain(' ')])])],
],
['*bold with a broken kissing emoji:**', [paragraph([bold([plain('bold with a broken kissing emoji:')]), plain('*')])]],
[
'*bold with a broken kissing emoji:*:*',
[paragraph([bold([plain('bold with a broken kissing emoji:')]), emoticon(':*', 'kissing_heart')])],
],
['*bold with a broken kissing emoji :*text *', [paragraph([bold([plain('bold with a broken kissing emoji :')]), plain('text *')])]],
['*broken bold with a kissing emoji :*', [paragraph([plain('*broken bold with a kissing emoji '), emoticon(':*', 'kissing_heart')])]],
[
'*broken bold with a kissing emoji :* ',
[paragraph([plain('*broken bold with a kissing emoji '), emoticon(':*', 'kissing_heart'), plain(' ')])],
],
['*two bolds**second*', [paragraph([bold([plain('two bolds')]), bold([plain('second')])])]],
[
'*two bolds*:**separated by kissing emoji*',
[paragraph([bold([plain('two bolds')]), emoticon(':*', 'kissing_heart'), bold([plain('separated by kissing emoji')])])],
],
['_test-_-', [paragraph([italic([plain('test-')]), plain('-')])]],
['_test -_- _', [paragraph([italic([plain('test '), emoticon('-_-', 'expressionless'), plain(' ')])])]],
['_test -_-_', [paragraph([italic([plain('test '), emoticon('-_-', 'expressionless')])])]],
['_two italics__second_', [paragraph([italic([plain('two italics')]), italic([plain('second')])])]],
['_italic with broken emoticon-_-_', [paragraph([italic([plain('italic with broken emoticon-')]), plain('-_')])]],
[
'_italic with broken emoticon-_-_ and more text',
[paragraph([italic([plain('italic with broken emoticon-')]), plain('-_ and more text')])],
],
[
'_italic with broken emoticon -_-and more text',
[paragraph([italic([plain('italic with broken emoticon -')]), plain('-and more text')])],
],
[
'_italic with broken emoticon -_-and more text -_-',
[paragraph([italic([plain('italic with broken emoticon -')]), plain('-and more text '), emoticon('-_-', 'expressionless')])],
],
[
'_italic with broken emoticon -_-and more text -_-_',
[paragraph([italic([plain('italic with broken emoticon -')]), plain('-and more text -'), italic([plain('-')])])],
],
['-_-italic content-_-', [paragraph([plain('-'), italic([plain('-italic content-')]), plain('-')])]],
])('parses emphasisWithEmoticons %p', (input, output) => {
expect(parse(input, { emoticons: true })).toMatchObject(output);
});