Skip to content
Snippets Groups Projects
Unverified Commit 0e3b93aa authored by Brett Walker's avatar Brett Walker Committed by GitLab
Browse files

Use AwardEmoji constants for thumbs (ruby)

parent aaa7711e
No related branches found
No related tags found
No related merge requests found
Showing
with 73 additions and 64 deletions
Loading
Loading
@@ -54,9 +54,9 @@ def award_state_class(awardable, awards, current_user)
def awards_sort(awards)
awards.sort_by do |award, award_emojis|
case award
when "thumbsup"
when AwardEmoji::THUMBS_UP
0
when "thumbsdown"
when AwardEmoji::THUMBS_DOWN
1
else
2
Loading
Loading
# frozen_string_literal: true
 
class AwardEmoji < ApplicationRecord
DOWNVOTE_NAME = "thumbsdown"
UPVOTE_NAME = "thumbsup"
THUMBS_UP = 'thumbsup'
THUMBS_DOWN = 'thumbsdown'
UPVOTE_NAME = THUMBS_UP
DOWNVOTE_NAME = THUMBS_DOWN
 
include Participable
include GhostUser
Loading
Loading
Loading
Loading
@@ -87,7 +87,7 @@ def emoji_events_data
 
award_emoji = AwardEmoji.new(
id: 1,
name: 'thumbsup',
name: AwardEmoji::THUMBS_UP,
user: current_user,
awardable: project.notes.last,
created_at: Time.zone.now,
Loading
Loading
Loading
Loading
@@ -217,17 +217,17 @@ def request
 
it "toggles the award emoji" do
expect do
post(:toggle_award_emoji, params: request_params.merge(name: "thumbsup"))
post(:toggle_award_emoji, params: request_params.merge(name: AwardEmoji::THUMBS_UP))
end.to change { note.award_emoji.count }.by(1)
 
expect(response).to have_gitlab_http_status(:ok)
end
 
it "removes the already awarded emoji" do
post(:toggle_award_emoji, params: request_params.merge(name: "thumbsup"))
post(:toggle_award_emoji, params: request_params.merge(name: AwardEmoji::THUMBS_UP))
 
expect do
post(:toggle_award_emoji, params: request_params.merge(name: "thumbsup"))
post(:toggle_award_emoji, params: request_params.merge(name: AwardEmoji::THUMBS_UP))
end.to change { AwardEmoji.count }.by(-1)
 
expect(response).to have_gitlab_http_status(:ok)
Loading
Loading
Loading
Loading
@@ -252,7 +252,7 @@ def request
end
 
describe 'POST toggle_award_emoji' do
let(:emoji_name) { 'thumbsup' }
let(:emoji_name) { AwardEmoji::THUMBS_UP }
let(:request_params) do
{
id: note,
Loading
Loading
Loading
Loading
@@ -95,7 +95,7 @@ def epics(params = {})
 
context 'by user reaction emoji' do
it 'returns epics reacted to by user' do
create(:award_emoji, name: 'thumbsup', awardable: epic1, user: search_user)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic1, user: search_user)
create(:award_emoji, name: 'star', awardable: epic3, user: search_user)
 
expect(epics(my_reaction_emoji: 'star')).to contain_exactly(epic3)
Loading
Loading
@@ -1022,7 +1022,7 @@ def execute
end
 
context 'with negated reaction emoji' do
let_it_be(:awarded_emoji) { create(:award_emoji, name: 'thumbsup', awardable: epic3, user: search_user) }
let_it_be(:awarded_emoji) { create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic3, user: search_user) }
let_it_be(:params) { { not: { my_reaction_emoji: awarded_emoji.name } } }
 
it 'returns all epics without given emoji name' do
Loading
Loading
Loading
Loading
@@ -45,7 +45,7 @@ def resolve_board_list_epics(args: {})
let_it_be(:production_label) { create(:group_label, group: group, name: 'production') }
let_it_be(:list1_epic3) { create(:labeled_epic, group: group, labels: [development, production_label], title: 'filter_this 1') }
let_it_be(:list1_epic4) { create(:labeled_epic, group: group, labels: [development], description: 'filter_this 2') }
let_it_be(:awarded_emoji) { create(:award_emoji, name: 'thumbsup', awardable: list1_epic1, user: user) }
let_it_be(:awarded_emoji) { create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: list1_epic1, user: user) }
 
subject(:results) { resolve(described_class, ctx: { current_user: user }, obj: list1, args: args) }
 
Loading
Loading
Loading
Loading
@@ -146,7 +146,7 @@
context 'with my_reaction_emoji' do
it 'filters epics by reaction emoji' do
create(:award_emoji, name: 'man_in_business_suit_levitating', user: current_user, awardable: epic1)
create(:award_emoji, name: 'thumbsdown', user: current_user, awardable: epic2)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, user: current_user, awardable: epic2)
 
epics = resolve_epics(my_reaction_emoji: 'man_in_business_suit_levitating')
 
Loading
Loading
@@ -319,7 +319,7 @@
let_it_be(:epic_1) { create(:labeled_epic, group: group, labels: [label]) }
let_it_be(:epic_2) { create(:epic, group: group, author: author) }
let_it_be(:epic_3) { create(:epic, group: group) }
let_it_be(:awarded_emoji) { create(:award_emoji, name: 'thumbsup', awardable: epic_3, user: current_user) }
let_it_be(:awarded_emoji) { create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic_3, user: current_user) }
 
subject(:results) { resolve_epics(args) }
 
Loading
Loading
Loading
Loading
@@ -35,7 +35,9 @@
 
let_it_be(:issue_with_iteration) { create(:issue, project: project_1, assignees: [other_user]) }
let_it_be(:issue_with_epic) { create(:issue, project: project_2, labels: [label], milestone: milestone) }
let_it_be(:award_emoji) { create(:award_emoji, name: 'thumbsup', user: user, awardable: issue_with_epic) }
let_it_be(:award_emoji) do
create(:award_emoji, name: AwardEmoji::THUMBS_UP, user: user, awardable: issue_with_epic)
end
 
let_it_be(:stage) do
create(:cycle_analytics_stage,
Loading
Loading
@@ -213,7 +215,7 @@
 
context 'when filtering by my_reaction_emoji' do
it 'filters by my_reaction_emoji' do
params[:my_reaction_emoji] = 'thumbsup'
params[:my_reaction_emoji] = AwardEmoji::THUMBS_UP
 
expect(issue_ids).to eq([stage_event_2.issue_id])
end
Loading
Loading
@@ -228,7 +230,7 @@
 
context 'when the filter is negated' do
it 'returns items without the given rection emoji' do
params[:not] = { my_reaction_emoji: 'thumbsup' }
params[:not] = { my_reaction_emoji: AwardEmoji::THUMBS_UP }
 
expect(issue_ids).to eq([stage_event_1.issue_id])
end
Loading
Loading
@@ -270,7 +272,9 @@
create(:merge_request, :unique_branches, source_project: project_1, target_project: project_1, labels: [label])
end
 
let_it_be(:award_emoji) { create(:award_emoji, name: 'thumbsup', user: user, awardable: merge_request_with_label) }
let_it_be(:award_emoji) do
create(:award_emoji, name: AwardEmoji::THUMBS_UP, user: user, awardable: merge_request_with_label)
end
 
let_it_be(:stage) do
create(:cycle_analytics_stage,
Loading
Loading
@@ -327,7 +331,7 @@
 
context 'when filtering by my_reaction_emoji' do
it 'filters by my_reaction_emoji' do
params[:my_reaction_emoji] = 'thumbsup'
params[:my_reaction_emoji] = AwardEmoji::THUMBS_UP
 
expect(merge_request_ids).to eq([stage_event_2.merge_request_id])
end
Loading
Loading
@@ -342,7 +346,7 @@
 
context 'when the filter is negated' do
it 'returns items without the given rection emoji' do
params[:not] = { my_reaction_emoji: 'thumbsup' }
params[:not] = { my_reaction_emoji: AwardEmoji::THUMBS_UP }
 
expect(merge_request_ids).to eq([stage_event_1.merge_request_id])
end
Loading
Loading
Loading
Loading
@@ -36,7 +36,7 @@
end
 
it 'has award emoji' do
expect(group.epics.find_by_iid(1).award_emoji.first.name).to eq('thumbsup')
expect(group.epics.find_by_iid(1).award_emoji.first.name).to eq(AwardEmoji::THUMBS_UP)
end
 
it 'preserves epic state' do
Loading
Loading
Loading
Loading
@@ -185,7 +185,7 @@ def json_project(project)
value_stream: stage.value_stream,
epic_id: 1,
iteration_id: 2,
my_reaction_emoji: 'thumbsup',
my_reaction_emoji: AwardEmoji::THUMBS_UP,
weight: 5
)
end
Loading
Loading
@@ -200,7 +200,7 @@ def json_project(project)
expect(subject[:stage]).to eq(%({"id":#{stage.id},"title":"#{stage.name}"}))
expect(subject[:epic_id]).to eq(1)
expect(subject[:iteration_id]).to eq(2)
expect(subject[:my_reaction_emoji]).to eq('thumbsup')
expect(subject[:my_reaction_emoji]).to eq(AwardEmoji::THUMBS_UP)
expect(subject[:weight]).to eq(5)
expect(subject[:enable_vsd_link]).to eq('true')
end
Loading
Loading
Loading
Loading
@@ -37,8 +37,8 @@
let_it_be(:emoji_2) { create(:award_emoji, :downvote, awardable: epic, user: create(:user)) }
 
it 'returns union of award emoji from epic and its associated work item', :aggregate_failures do
expect(epic.award_emoji.pluck(:name)).to match_array(%w[thumbsup thumbsdown])
expect(work_item.award_emoji.pluck(:name)).to match_array(%w[thumbsup thumbsdown])
expect(epic.award_emoji.pluck(:name)).to match_array([AwardEmoji::THUMBS_UP, AwardEmoji::THUMBS_DOWN])
expect(work_item.award_emoji.pluck(:name)).to match_array([AwardEmoji::THUMBS_UP, AwardEmoji::THUMBS_DOWN])
end
 
it 'reads participants from award emoji on epic and its associated work item' do
Loading
Loading
@@ -90,8 +90,8 @@
end
 
it 'reads emojis only from epic' do
expect(epic.award_emoji.pluck(:name)).to match_array(%w[thumbsdown])
expect(work_item.award_emoji.pluck(:name)).to match_array(%w[thumbsup])
expect(epic.award_emoji.pluck(:name)).to match_array([AwardEmoji::THUMBS_DOWN])
expect(work_item.award_emoji.pluck(:name)).to match_array([AwardEmoji::THUMBS_UP])
end
end
 
Loading
Loading
@@ -102,8 +102,8 @@
end
 
it 'returns award emoji only from epic' do
expect(epic.award_emoji.pluck(:name)).to match_array(%w[thumbsdown])
expect(work_item.award_emoji.pluck(:name)).to match_array(%w[thumbsup])
expect(epic.award_emoji.pluck(:name)).to match_array([AwardEmoji::THUMBS_DOWN])
expect(work_item.award_emoji.pluck(:name)).to match_array([AwardEmoji::THUMBS_UP])
end
end
end
Loading
Loading
Loading
Loading
@@ -93,7 +93,7 @@
end
 
it "returns a 404 if the user is not authenticated" do
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji"), params: { name: 'thumbsup' }
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji"), params: { name: AwardEmoji::THUMBS_UP }
 
expect(response).to have_gitlab_http_status(:not_found)
end
Loading
Loading
@@ -101,13 +101,13 @@
it "normalizes +1 as thumbsup award" do
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji", user), params: { name: '+1' }
 
expect(epic.award_emoji.last.name).to eq("thumbsup")
expect(epic.award_emoji.last.name).to eq(AwardEmoji::THUMBS_UP)
end
 
context 'when the emoji already has been awarded' do
it 'returns a 404 status code' do
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji", user), params: { name: 'thumbsup' }
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji", user), params: { name: 'thumbsup' }
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji", user), params: { name: AwardEmoji::THUMBS_UP }
post api("/groups/#{group.id}/epics/#{epic.iid}/award_emoji", user), params: { name: AwardEmoji::THUMBS_UP }
 
expect(response).to have_gitlab_http_status(:not_found)
expect(json_response["message"]).to match("has already been taken")
Loading
Loading
@@ -136,10 +136,10 @@
expect(todo.reload).to be_done
end
 
it "normalizes +1 as thumbsup award" do
it "normalizes +1 as thumbs_up award" do
post api("/groups/#{group.id}/epics/#{epic.iid}/notes/#{note.id}/award_emoji", user), params: { name: '+1' }
 
expect(note.award_emoji.last.name).to eq("thumbsup")
expect(note.award_emoji.last.name).to eq(AwardEmoji::THUMBS_UP)
end
 
context 'when the emoji already has been awarded' do
Loading
Loading
Loading
Loading
@@ -275,8 +275,8 @@
end
 
it 'has upvote/downvote information' do
create(:award_emoji, name: 'thumbsup', awardable: epic, user: user)
create(:award_emoji, name: 'thumbsdown', awardable: epic2, user: user)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic, user: user)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: epic2, user: user)
 
get api(url)
 
Loading
Loading
Loading
Loading
@@ -231,11 +231,11 @@ def query_epics_which_start_with_iid(iid)
create(:epic, group: group) do |epic|
create(:award_emoji, name: 'rocket', awardable: epic)
create(:award_emoji, name: 'eyes', awardable: epic.sync_object)
create(:award_emoji, name: 'thumbsup', awardable: epic)
create(:award_emoji, name: 'thumbsup', awardable: epic.sync_object)
create(:award_emoji, name: 'thumbsdown', awardable: epic)
create(:award_emoji, name: 'thumbsdown', awardable: epic)
create(:award_emoji, name: 'thumbsdown', awardable: epic.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: epic)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: epic)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: epic.sync_object)
end
end
 
Loading
Loading
@@ -269,7 +269,8 @@ def query_epics_which_start_with_iid(iid)
expect(response.map do |emoji|
emoji['user']['username']
end.uniq).to match_array(epic.award_emoji.map(&:user).map(&:username).uniq)
expect(response.pluck('name').uniq).to match_array(%w[eyes rocket thumbsup thumbsdown])
expect(response.pluck('name').uniq)
.to match_array(%W[eyes rocket #{AwardEmoji::THUMBS_UP} #{AwardEmoji::THUMBS_DOWN}])
end
 
it 'includes unified upvotes and downvotes' do
Loading
Loading
@@ -307,10 +308,10 @@ def execute_query
before do
create(:award_emoji, awardable: epic_a, user: user)
create(:award_emoji, awardable: epic_b, user: user)
create(:award_emoji, name: 'thumbsup', awardable: epic_a)
create(:award_emoji, name: 'thumbsup', awardable: epic_a.sync_object)
create(:award_emoji, name: 'thumbsup', awardable: epic_b)
create(:award_emoji, name: 'thumbsdown', awardable: epic_b.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic_a)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic_a.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic_b)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: epic_b.sync_object)
end
 
include_examples 'N+1 query check', threshold: 1
Loading
Loading
Loading
Loading
@@ -166,8 +166,8 @@ def global_ids(*epics)
end
 
it 'has upvote/downvote information' do
create(:award_emoji, name: 'thumbsup', awardable: epic, user: user)
create(:award_emoji, name: 'thumbsdown', awardable: epic2, user: user)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: epic, user: user)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: epic2, user: user)
 
post_graphql(query, current_user: user)
 
Loading
Loading
@@ -491,8 +491,8 @@ def global_ids(*epics)
let(:requested_fields) { [:upvotes, :downvotes] }
 
before do
create_list(:award_emoji, 2, name: 'thumbsup', awardable: epic_a)
create_list(:award_emoji, 2, name: 'thumbsdown', awardable: epic_b)
create_list(:award_emoji, 2, name: AwardEmoji::THUMBS_UP, awardable: epic_a)
create_list(:award_emoji, 2, name: AwardEmoji::THUMBS_DOWN, awardable: epic_b)
end
 
include_examples 'N+1 query check'
Loading
Loading
Loading
Loading
@@ -85,7 +85,7 @@
) do |work_item|
create(:award_emoji, name: 'eyes', awardable: work_item)
create(:award_emoji, name: 'rocket', awardable: work_item.sync_object)
create(:award_emoji, name: 'thumbsup', awardable: work_item.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: work_item.sync_object)
end
 
expect do
Loading
Loading
@@ -169,10 +169,10 @@
end
 
it 'fetches unified upvotes and downvotes' do
create(:award_emoji, name: 'thumbsup', awardable: group_work_item)
create(:award_emoji, name: 'thumbsup', awardable: group_work_item.sync_object)
create(:award_emoji, name: 'thumbsup', awardable: group_work_item.sync_object)
create(:award_emoji, name: 'thumbsdown', awardable: group_work_item.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: group_work_item)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: group_work_item.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: group_work_item.sync_object)
create(:award_emoji, name: AwardEmoji::THUMBS_DOWN, awardable: group_work_item.sync_object)
 
post_graphql(query, current_user: current_user)
 
Loading
Loading
Loading
Loading
@@ -1488,9 +1488,9 @@ def find_note(work_item, starting_with)
users = create_list(:user, 6)
 
# Add 3 participant to the legacy epic
create(:award_emoji, name: 'thumbsup', awardable: work_item, user: users[0])
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: work_item, user: users[0])
note = create(:note, noteable: work_item.synced_epic, author: users[1], project: project)
create(:award_emoji, name: 'thumbsup', awardable: note, user: users[2])
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: note, user: users[2])
 
post_graphql(query, current_user: current_user) # warm-up
 
Loading
Loading
@@ -1499,9 +1499,9 @@ def find_note(work_item, starting_with)
end
 
# Add 3 more participants to the legacy epic
create(:award_emoji, name: 'thumbsup', awardable: work_item.synced_epic, user: users[3])
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: work_item.synced_epic, user: users[3])
note = create(:note, noteable: work_item.synced_epic, author: users[4], project: project)
create(:award_emoji, name: 'thumbsup', awardable: note, user: users[5])
create(:award_emoji, name: AwardEmoji::THUMBS_UP, awardable: note, user: users[5])
 
expect do
post_graphql(query, current_user: current_user)
Loading
Loading
Loading
Loading
@@ -23,7 +23,9 @@
end
 
context 'when extra query params are given' do
let(:extra_query_params) { { weight: '3', epic_id: '1', iteration_id: '2', my_reaction_emoji: 'thumbsup' } }
let(:extra_query_params) do
{ weight: '3', epic_id: '1', iteration_id: '2', my_reaction_emoji: AwardEmoji::THUMBS_UP }
end
 
context 'when not licensed' do
it 'does not expose unsupported query params' do
Loading
Loading
@@ -47,7 +49,7 @@
expect(body).to include('data-weight="3"')
expect(body).to include('data-epic-id="1"')
expect(body).to include('data-iteration-id="2"')
expect(body).to include('data-my-reaction-emoji="thumbsup"')
expect(body).to include(%(data-my-reaction-emoji="#{AwardEmoji::THUMBS_UP}"))
end
end
end
Loading
Loading
Loading
Loading
@@ -15,7 +15,7 @@
it 'exposes the query params in data attributes' do
stub_licensed_features(cycle_analytics_for_groups: true)
 
extra_query_params = { weight: '3', epic_id: '1', iteration_id: '2', my_reaction_emoji: 'thumbsup' }
extra_query_params = { weight: '3', epic_id: '1', iteration_id: '2', my_reaction_emoji: AwardEmoji::THUMBS_UP }
 
expect_next_instance_of(Gitlab::Analytics::CycleAnalytics::RequestParams) do |instance|
expect(instance).to have_attributes(**extra_query_params)
Loading
Loading
@@ -26,6 +26,6 @@
expect(body).to include('data-weight="3"')
expect(body).to include('data-epic-id="1"')
expect(body).to include('data-iteration-id="2"')
expect(body).to include('data-my-reaction-emoji="thumbsup"')
expect(body).to include(%(data-my-reaction-emoji="#{AwardEmoji::THUMBS_UP}"))
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment