summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/emoji_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-07-20 12:26:25 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-07-20 12:26:25 +0000
commita09983ae35713f5a2bbb100981116d31ce99826e (patch)
tree2ee2af7bd104d57086db360a7e6d8c9d5d43667a /spec/lib/gitlab/emoji_spec.rb
parent18c5ab32b738c0b6ecb4d0df3994000482f34bd8 (diff)
downloadgitlab-ce-a09983ae35713f5a2bbb100981116d31ce99826e.tar.gz
Add latest changes from gitlab-org/gitlab@13-2-stable-ee
Diffstat (limited to 'spec/lib/gitlab/emoji_spec.rb')
-rw-r--r--spec/lib/gitlab/emoji_spec.rb125
1 files changed, 125 insertions, 0 deletions
diff --git a/spec/lib/gitlab/emoji_spec.rb b/spec/lib/gitlab/emoji_spec.rb
new file mode 100644
index 00000000000..ada37f25d1e
--- /dev/null
+++ b/spec/lib/gitlab/emoji_spec.rb
@@ -0,0 +1,125 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Emoji do
+ let_it_be(:emojis) { Gemojione.index.instance_variable_get(:@emoji_by_name) }
+ let_it_be(:emojis_by_moji) { Gemojione.index.instance_variable_get(:@emoji_by_moji) }
+ let_it_be(:emoji_unicode_versions_by_name) { Gitlab::Json.parse(File.read(Rails.root.join('fixtures', 'emojis', 'emoji-unicode-version-map.json'))) }
+ let_it_be(:emojis_aliases) { Gitlab::Json.parse(File.read(Rails.root.join('fixtures', 'emojis', 'aliases.json'))) }
+
+ describe '.emojis' do
+ it 'returns emojis' do
+ current_emojis = described_class.emojis
+
+ expect(current_emojis).to eq(emojis)
+ end
+ end
+
+ describe '.emojis_by_moji' do
+ it 'return emojis by moji' do
+ current_emojis_by_moji = described_class.emojis_by_moji
+
+ expect(current_emojis_by_moji).to eq(emojis_by_moji)
+ end
+ end
+
+ describe '.emojis_unicodes' do
+ it 'returns emoji unicodes' do
+ emoji_keys = described_class.emojis_unicodes
+
+ expect(emoji_keys).to eq(emojis_by_moji.keys)
+ end
+ end
+
+ describe '.emojis_names' do
+ it 'returns emoji names' do
+ emoji_names = described_class.emojis_names
+
+ expect(emoji_names).to eq(emojis.keys)
+ end
+ end
+
+ describe '.emojis_aliases' do
+ it 'returns emoji aliases' do
+ emoji_aliases = described_class.emojis_aliases
+
+ expect(emoji_aliases).to eq(emojis_aliases)
+ end
+ end
+
+ describe '.emoji_filename' do
+ it 'returns emoji filename' do
+ # "100" => {"unicode"=>"1F4AF"...}
+ emoji_filename = described_class.emoji_filename('100')
+
+ expect(emoji_filename).to eq(emojis['100']['unicode'])
+ end
+ end
+
+ describe '.emoji_unicode_filename' do
+ it 'returns emoji unicode filename' do
+ emoji_unicode_filename = described_class.emoji_unicode_filename('💯')
+
+ expect(emoji_unicode_filename).to eq(emojis_by_moji['💯']['unicode'])
+ end
+ end
+
+ describe '.emoji_unicode_version' do
+ it 'returns emoji unicode version by name' do
+ emoji_unicode_version = described_class.emoji_unicode_version('100')
+
+ expect(emoji_unicode_version).to eq(emoji_unicode_versions_by_name['100'])
+ end
+ end
+
+ describe '.normalize_emoji_name' do
+ it 'returns same name if not found in aliases' do
+ emoji_name = described_class.normalize_emoji_name('random')
+
+ expect(emoji_name).to eq('random')
+ end
+
+ it 'returns name if name found in aliases' do
+ emoji_name = described_class.normalize_emoji_name('small_airplane')
+
+ expect(emoji_name).to eq(emojis_aliases['small_airplane'])
+ end
+ end
+
+ describe '.emoji_image_tag' do
+ it 'returns emoji image tag' do
+ emoji_image = described_class.emoji_image_tag('emoji_one', 'src_url')
+
+ expect(emoji_image).to eq( "<img class='emoji' title=':emoji_one:' alt=':emoji_one:' src='src_url' height='20' width='20' align='absmiddle' />")
+ end
+ end
+
+ describe '.emoji_exists?' do
+ it 'returns true if the name exists' do
+ emoji_exists = described_class.emoji_exists?('100')
+
+ expect(emoji_exists).to be_truthy
+ end
+
+ it 'returns false if the name does not exist' do
+ emoji_exists = described_class.emoji_exists?('random')
+
+ expect(emoji_exists).to be_falsey
+ end
+ end
+
+ describe '.gl_emoji_tag' do
+ it 'returns gl emoji tag if emoji is found' do
+ gl_tag = described_class.gl_emoji_tag('small_airplane')
+
+ expect(gl_tag).to eq('<gl-emoji title="small airplane" data-name="airplane_small" data-unicode-version="7.0">🛩</gl-emoji>')
+ end
+
+ it 'returns nil if emoji name is not found' do
+ gl_tag = described_class.gl_emoji_tag('random')
+
+ expect(gl_tag).to be_nil
+ end
+ end
+end