From a978b88997169782ac35f416bf88d6afd60edd1e Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Fri, 30 Jun 2017 08:29:22 -0700 Subject: Faster emojify() algorithm, avoid regex replace (#4019) * Faster emojify() algorithm, avoid regex replace * add semicolon --- spec/javascript/components/emojify.test.js | 49 ++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 spec/javascript/components/emojify.test.js (limited to 'spec/javascript') diff --git a/spec/javascript/components/emojify.test.js b/spec/javascript/components/emojify.test.js new file mode 100644 index 000000000..7a496623e --- /dev/null +++ b/spec/javascript/components/emojify.test.js @@ -0,0 +1,49 @@ +import { expect } from 'chai'; +import emojify from '../../../app/javascript/mastodon/emoji'; + +describe('emojify', () => { + it('does a basic emojify', () => { + expect(emojify(':smile:')).to.equal( + '😄'); + }); + + it('does a double emojify', () => { + expect(emojify(':smile: and :wink:')).to.equal( + '😄 and 😉'); + }); + + it('works with random colons', () => { + expect(emojify(':smile: : :wink:')).to.equal( + '😄 : 😉'); + expect(emojify(':smile::::wink:')).to.equal( + '😄::😉'); + expect(emojify(':smile:::::wink:')).to.equal( + '😄:::😉'); + }); + + it('works with tags', () => { + expect(emojify('

:smile:

')).to.equal( + '

😄

'); + expect(emojify('

:smile:

and

:wink:

')).to.equal( + '

😄

and

😉

'); + }); + + it('ignores unknown shortcodes', () => { + expect(emojify(':foobarbazfake:')).to.equal(':foobarbazfake:'); + }); + + it('ignores shortcodes inside of tags', () => { + expect(emojify('

')).to.equal('

'); + }); + + it('works with unclosed tags', () => { + expect(emojify('hello>')).to.equal('hello>'); + expect(emojify(' { + expect(emojify('smile:')).to.equal('smile:'); + expect(emojify(':smile')).to.equal(':smile'); + }); + +}); -- cgit