summaryrefslogtreecommitdiffstats
path: root/webapp/tests/utils/emoticons.test.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/tests/utils/emoticons.test.jsx')
-rw-r--r--webapp/tests/utils/emoticons.test.jsx36
1 files changed, 36 insertions, 0 deletions
diff --git a/webapp/tests/utils/emoticons.test.jsx b/webapp/tests/utils/emoticons.test.jsx
new file mode 100644
index 000000000..65848d2cc
--- /dev/null
+++ b/webapp/tests/utils/emoticons.test.jsx
@@ -0,0 +1,36 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import EmojiStore from 'stores/emoji_store.jsx';
+import * as Emoticons from 'utils/emoticons.jsx';
+
+describe('Emoticons', () => {
+ describe('handleEmoticons', () => {
+ const emojis = EmojiStore.getEmojis();
+
+ test('should replace emoticons with tokens', () => {
+ expect(Emoticons.handleEmoticons(':goat: :dash:', new Map(), emojis)).
+ toEqual('$MM_EMOTICON0 $MM_EMOTICON1');
+ });
+
+ test('should replace emoticons not separated by whitespace', () => {
+ expect(Emoticons.handleEmoticons(':goat::dash:', new Map(), emojis)).
+ toEqual('$MM_EMOTICON0$MM_EMOTICON1');
+ });
+
+ test('should replace emoticons separated by punctuation', () => {
+ expect(Emoticons.handleEmoticons('/:goat:..:dash:)', new Map(), emojis)).
+ toEqual('/$MM_EMOTICON0..$MM_EMOTICON1)');
+ });
+
+ test('should replace emoticons separated by text', () => {
+ expect(Emoticons.handleEmoticons('asdf:goat:asdf:dash:asdf', new Map(), emojis)).
+ toEqual('asdf$MM_EMOTICON0asdf$MM_EMOTICON1asdf');
+ });
+
+ test('shouldn\'t replace invalid emoticons', () => {
+ expect(Emoticons.handleEmoticons(':asdf: :goat : : dash:', new Map(), emojis)).
+ toEqual(':asdf: :goat : : dash:');
+ });
+ });
+});