diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-04-19 15:08:32 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-04-19 15:08:32 +0000 |
commit | 846dc476d835e43b123e0d66da3a60ed07f10641 (patch) | |
tree | 02231005811495589ab8bf4a2f4d52f80dc95117 /spec/models/award_emoji_spec.rb | |
parent | 2ef0b7f13d72eee215e3491a8db4623cbcdd845c (diff) | |
download | gitlab-ce-846dc476d835e43b123e0d66da3a60ed07f10641.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/award_emoji_spec.rb')
-rw-r--r-- | spec/models/award_emoji_spec.rb | 85 |
1 files changed, 76 insertions, 9 deletions
diff --git a/spec/models/award_emoji_spec.rb b/spec/models/award_emoji_spec.rb index 54f1d842acc..4da19267b1c 100644 --- a/spec/models/award_emoji_spec.rb +++ b/spec/models/award_emoji_spec.rb @@ -59,17 +59,41 @@ RSpec.describe AwardEmoji do end end - it 'accepts custom emoji' do - user = create(:user) - group = create(:group) - group.add_maintainer(user) + 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) } - project = create(:project, namespace: group) - issue = create(:issue, project: project) - emoji = create(:custom_emoji, name: 'partyparrot', namespace: group) - new_award = build(:award_emoji, user: user, awardable: issue, name: emoji.name) + 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 + 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 @@ -223,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 |