Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-10-13 12:08:27 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-10-13 12:08:27 +0300
commit15ae4a8da83661f2b714d804721001a53b354d28 (patch)
tree91080b2b969a66857d78fb9008c1d0c367132a8d /spec/frontend/gfm_auto_complete_spec.js
parent8f71e69fdbb65d2cf95cf16ef5a0add0919edb45 (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.js59
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');
+ });
+ });
+ });
});