diff options
author | Oswaldo Ferreira <oswaldo@gitlab.com> | 2018-04-19 11:38:07 -0300 |
---|---|---|
committer | Oswaldo Ferreira <oswaldo@gitlab.com> | 2018-04-19 11:38:07 -0300 |
commit | 027d64cc1b4eab1b9e882014b4841a43e248ec93 (patch) | |
tree | c3a466730e717fa292ad1792e785019e4f807679 | |
parent | c0b241b60f6e7eb6538b5ad6a80069a5a6c4f8e1 (diff) | |
download | gitlab-ce-all-thumber-emoji-count-takeover.tar.gz |
Address spec failuresall-thumber-emoji-count-takeover
-rw-r--r-- | app/models/award_emoji.rb | 28 | ||||
-rw-r--r-- | app/models/concerns/awardable.rb | 2 | ||||
-rw-r--r-- | spec/factories/award_emoji.rb | 4 | ||||
-rw-r--r-- | spec/models/concerns/awardable_spec.rb | 17 |
4 files changed, 39 insertions, 12 deletions
diff --git a/app/models/award_emoji.rb b/app/models/award_emoji.rb index e783363150c..050a88674a4 100644 --- a/app/models/award_emoji.rb +++ b/app/models/award_emoji.rb @@ -1,6 +1,17 @@ class AwardEmoji < ActiveRecord::Base - DOWNVOTE_NAMES = %w(thumbsdown thumbsdown_tone1 thumbsdown_tone2 thumbsdown_tone3 thumbsdown_tone4 thumbsdown_tone5) - UPVOTE_NAMES = %w(thumbsup thumbsup_tone1 thumbsup_tone2 thumbsup_tone3 thumbsup_tone4 thumbsup_tone5) + DOWNVOTE_NAMES = %w(thumbsdown + thumbsdown_tone1 + thumbsdown_tone2 + thumbsdown_tone3 + thumbsdown_tone4 + thumbsdown_tone5).freeze + + UPVOTE_NAMES = %w(thumbsup + thumbsup_tone1 + thumbsup_tone2 + thumbsup_tone3 + thumbsup_tone4 + thumbsup_tone5).freeze include Participable include GhostUser @@ -26,17 +37,24 @@ class AwardEmoji < ActiveRecord::Base .where('name IN (?) AND awardable_type = ? AND awardable_id IN (?)', [*DOWNVOTE_NAMES, *UPVOTE_NAMES], type, ids) .group('name', 'awardable_id') end + + def downvote?(name) + DOWNVOTE_NAMES.include?(name) + end + + def upvote?(name) + UPVOTE_NAMES.include?(name) + end end def downvote? - DOWNVOTE_NAMES.include?(name) + self.class.downvote?(name) end def upvote? - UPVOTE_NAMES.include?(name) + self.class.upvote?(name) end - def expire_etag_cache awardable.try(:expire_etag_cache) end diff --git a/app/models/concerns/awardable.rb b/app/models/concerns/awardable.rb index 318ab195b79..1aa6e259369 100644 --- a/app/models/concerns/awardable.rb +++ b/app/models/concerns/awardable.rb @@ -75,7 +75,7 @@ module Awardable end def awardable_votes?(name) - AwardEmoji::UPVOTE_NAME == name || AwardEmoji::DOWNVOTE_NAME == name + AwardEmoji.upvote?(name) || AwardEmoji.downvote?(name) end def user_can_award?(current_user, name) diff --git a/spec/factories/award_emoji.rb b/spec/factories/award_emoji.rb index d37e2bf511e..f93e27bf81e 100644 --- a/spec/factories/award_emoji.rb +++ b/spec/factories/award_emoji.rb @@ -1,6 +1,6 @@ FactoryBot.define do factory :award_emoji do - name "thumbsup" + name { AwardEmoji::UPVOTE_NAMES.sample } user awardable factory: :issue @@ -10,7 +10,7 @@ FactoryBot.define do trait :upvote trait :downvote do - name "thumbsdown" + name { AwardEmoji::DOWNVOTE_NAMES.sample } end end end diff --git a/spec/models/concerns/awardable_spec.rb b/spec/models/concerns/awardable_spec.rb index a980cff28fb..cc07f2e6fee 100644 --- a/spec/models/concerns/awardable_spec.rb +++ b/spec/models/concerns/awardable_spec.rb @@ -25,6 +25,11 @@ describe Awardable do end describe ".awarded" do + before do + award_emoji.update_column(:name, 'thumbsdown') + award_emoji2.update_column(:name, 'thumbsup') + end + it "filters by user and emoji name" do expect(Issue.awarded(award_emoji.user, "thumbsup")).to be_empty expect(Issue.awarded(award_emoji.user, "thumbsdown")).to eq [issue] @@ -56,22 +61,26 @@ describe Awardable do it 'does not allow upvoting or downvoting your own issue' do issue.update!(author: user) - expect(issue.user_can_award?(user, AwardEmoji::DOWNVOTE_NAME)).to be_falsy - expect(issue.user_can_award?(user, AwardEmoji::UPVOTE_NAME)).to be_falsy + expect(issue.user_can_award?(user, AwardEmoji::DOWNVOTE_NAMES.sample)).to be_falsy + expect(issue.user_can_award?(user, AwardEmoji::UPVOTE_NAMES.sample)).to be_falsy end it 'is truthy when the user is allowed to award emoji' do - expect(issue.user_can_award?(user, AwardEmoji::UPVOTE_NAME)).to be_truthy + expect(issue.user_can_award?(user, AwardEmoji::UPVOTE_NAMES.sample)).to be_truthy end it 'is falsy when the project is archived' do issue.project.update!(archived: true) - expect(issue.user_can_award?(user, AwardEmoji::UPVOTE_NAME)).to be_falsy + expect(issue.user_can_award?(user, AwardEmoji::UPVOTE_NAMES.sample)).to be_falsy end end describe "#toggle_award_emoji" do + before do + award_emoji.update_column(:name, 'thumbsdown') + end + it "adds an emoji if it isn't awarded yet" do expect { issue.toggle_award_emoji("thumbsup", award_emoji.user) }.to change { AwardEmoji.count }.by(1) end |