diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-13 12:08:27 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-13 12:08:27 +0300 |
commit | 15ae4a8da83661f2b714d804721001a53b354d28 (patch) | |
tree | 91080b2b969a66857d78fb9008c1d0c367132a8d /spec/frontend/gfm_auto_complete_spec.js | |
parent | 8f71e69fdbb65d2cf95cf16ef5a0add0919edb45 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/gfm_auto_complete_spec.js')
-rw-r--r-- | spec/frontend/gfm_auto_complete_spec.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/spec/frontend/gfm_auto_complete_spec.js b/spec/frontend/gfm_auto_complete_spec.js index 25cd606a094..ce59574ef61 100644 --- a/spec/frontend/gfm_auto_complete_spec.js +++ b/spec/frontend/gfm_auto_complete_spec.js @@ -1,6 +1,7 @@ /* eslint no-param-reassign: "off" */ import $ from 'jquery'; +import { emojiFixtureMap, initEmojiMock, describeEmojiFields } from 'helpers/emoji'; import '~/lib/utils/jquery_at_who'; import GfmAutoComplete, { membersBeforeSave } from 'ee_else_ce/gfm_auto_complete'; @@ -702,4 +703,62 @@ describe('GfmAutoComplete', () => { `('$input shows $output.length labels', expectLabels); }); }); + + describe('emoji', () => { + const { atom } = emojiFixtureMap; + const assertInserted = ({ input, subject, emoji }) => + expect(subject).toBe(`:${emoji?.name || input}:`); + const assertTemplated = ({ input, subject, emoji }) => + expect(subject.replace(/\s+/g, ' ')).toBe( + `<li>${input} <gl-emoji data-name="${emoji?.name || input}"></gl-emoji> </li>`, + ); + + let mock; + + beforeEach(async () => { + mock = await initEmojiMock(); + + await new GfmAutoComplete({}).loadEmojiData({ atwho() {}, trigger() {} }, ':'); + if (!GfmAutoComplete.glEmojiTag) throw new Error('emoji not loaded'); + }); + + afterEach(() => { + mock.restore(); + }); + + describe.each` + name | inputFormat | assert + ${'insertTemplateFunction'} | ${name => ({ name })} | ${assertInserted} + ${'templateFunction'} | ${name => name} | ${assertTemplated} + `('Emoji.$name', ({ name, inputFormat, assert }) => { + const execute = (input, emoji) => + assert({ + input, + emoji, + subject: GfmAutoComplete.Emoji[name](inputFormat(input)), + }); + + describeEmojiFields('for $field', ({ accessor }) => { + it('should work with lowercase', () => { + execute(accessor(atom), atom); + }); + + it('should work with uppercase', () => { + execute(accessor(atom).toUpperCase(), atom); + }); + + it('should work with partial value', () => { + execute(accessor(atom).slice(1), atom); + }); + }); + + it('should work with unicode value', () => { + execute(atom.moji, atom); + }); + + it('should pass through unknown value', () => { + execute('foo bar baz'); + }); + }); + }); }); |