summaryrefslogtreecommitdiff
path: root/spec/models/award_emoji_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 10:00:54 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 10:00:54 +0000
commit3cccd102ba543e02725d247893729e5c73b38295 (patch)
treef36a04ec38517f5deaaacb5acc7d949688d1e187 /spec/models/award_emoji_spec.rb
parent205943281328046ef7b4528031b90fbda70c75ac (diff)
downloadgitlab-ce-3cccd102ba543e02725d247893729e5c73b38295.tar.gz
Add latest changes from gitlab-org/gitlab@14-10-stable-eev14.10.0-rc42
Diffstat (limited to 'spec/models/award_emoji_spec.rb')
-rw-r--r--spec/models/award_emoji_spec.rb80
1 files changed, 80 insertions, 0 deletions
diff --git a/spec/models/award_emoji_spec.rb b/spec/models/award_emoji_spec.rb
index ebd1441f901..4da19267b1c 100644
--- a/spec/models/award_emoji_spec.rb
+++ b/spec/models/award_emoji_spec.rb
@@ -58,6 +58,43 @@ RSpec.describe AwardEmoji do
end
end
end
+
+ context 'custom emoji' do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:emoji) { create(:custom_emoji, name: 'partyparrot', namespace: group) }
+
+ before do
+ group.add_maintainer(user)
+ end
+
+ %i[issue merge_request note_on_issue snippet].each do |awardable_type|
+ let_it_be(:project) { create(:project, namespace: group) }
+ let(:awardable) { create(awardable_type, project: project) }
+
+ it "is accepted on #{awardable_type}" do
+ new_award = build(:award_emoji, user: user, awardable: awardable, name: emoji.name)
+
+ expect(new_award).to be_valid
+ end
+ end
+
+ it 'is accepted on subgroup issue' do
+ subgroup = create(:group, parent: group)
+ project = create(:project, namespace: subgroup)
+ issue = create(:issue, project: project)
+ new_award = build(:award_emoji, user: user, awardable: issue, name: emoji.name)
+
+ expect(new_award).to be_valid
+ end
+
+ it 'is not supported on personal snippet (yet)' do
+ snippet = create(:personal_snippet)
+ new_award = build(:award_emoji, user: snippet.author, awardable: snippet, name: 'null')
+
+ expect(new_award).not_to be_valid
+ end
+ end
end
describe 'scopes' do
@@ -210,4 +247,47 @@ RSpec.describe AwardEmoji do
end
end
end
+
+ describe '#url' do
+ let_it_be(:custom_emoji) { create(:custom_emoji) }
+ let_it_be(:project) { create(:project, namespace: custom_emoji.group) }
+ let_it_be(:issue) { create(:issue, project: project) }
+
+ def build_award(name)
+ build(:award_emoji, awardable: issue, name: name)
+ end
+
+ it 'is nil for built-in emoji' do
+ new_award = build_award('tada')
+
+ count = ActiveRecord::QueryRecorder.new do
+ expect(new_award.url).to be_nil
+ end.count
+ expect(count).to be_zero
+ end
+
+ it 'is nil for unrecognized emoji' do
+ new_award = build_award('null')
+
+ expect(new_award.url).to be_nil
+ end
+
+ it 'is set for custom emoji' do
+ new_award = build_award(custom_emoji.name)
+
+ expect(new_award.url).to eq(custom_emoji.url)
+ end
+
+ context 'feature flag disabled' do
+ before do
+ stub_feature_flags(custom_emoji: false)
+ end
+
+ it 'does not query' do
+ new_award = build_award(custom_emoji.name)
+
+ expect(ActiveRecord::QueryRecorder.new { new_award.url }.count).to be_zero
+ end
+ end
+ end
end