Skip to content
Snippets Groups Projects
Commit 8df7e602 authored by Heinrich Lee Yu's avatar Heinrich Lee Yu
Browse files

Fix tests

parent 69dcab23
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -480,13 +480,14 @@ class IssuableFinder
 
def by_my_reaction_emoji(items)
if params[:my_reaction_emoji].present? && current_user
if filter_by_no_reaction?
items = items.not_awarded(current_user)
elsif filter_by_any_reaction?
items = items.awarded_any(current_user)
else
items = items.awarded(current_user, params[:my_reaction_emoji])
end
items =
if filter_by_no_reaction?
items.not_awarded(current_user)
elsif filter_by_any_reaction?
items.awarded(current_user)
else
items.awarded(current_user, params[:my_reaction_emoji])
end
end
 
items
Loading
Loading
Loading
Loading
@@ -13,13 +13,13 @@ module Awardable
end
 
class_methods do
def awarded(user, name)
def awarded(user, name = nil)
sql = <<~EOL
EXISTS (
SELECT TRUE
FROM award_emoji
WHERE user_id = :user_id AND
name = :name AND
#{"name = :name AND" if name.present?}
awardable_type = :awardable_type AND
awardable_id = #{self.arel_table.name}.id
)
Loading
Loading
@@ -28,20 +28,6 @@ module Awardable
where(sql, user_id: user.id, name: name, awardable_type: self.name)
end
 
def awarded_any(user)
sql = <<~EOL
EXISTS (
SELECT TRUE
FROM award_emoji
WHERE user_id = :user_id AND
awardable_type = :awardable_type AND
awardable_id = #{self.arel_table.name}.id
)
EOL
where(sql, user_id: user.id, awardable_type: self.name)
end
def not_awarded(user)
sql = <<~EOL
NOT EXISTS (
Loading
Loading
Loading
Loading
@@ -92,7 +92,7 @@ describe 'Dropdown emoji', :js do
it 'shows the most populated emoji at top of dropdown' do
send_keys_to_filtered_search('my-reaction:')
 
expect(first('#js-dropdown-my-reaction li')).to have_content(award_emoji_star.name)
expect(first('#js-dropdown-my-reaction .filter-dropdown li')).to have_content(award_emoji_star.name)
end
end
 
Loading
Loading
@@ -122,18 +122,18 @@ describe 'Dropdown emoji', :js do
end
 
it 'selects `None`' do
find('#js-dropdown-assignee .filter-dropdown-item', text: 'None').click
find('#js-dropdown-my-reaction .filter-dropdown-item', text: 'None').click
 
expect(page).to have_css(js_dropdown_emoji, visible: false)
expect_tokens([emoji_token('none')])
expect_tokens([reaction_token('none', false)])
expect_filtered_search_input_empty
end
 
it 'selects `Any`' do
find('#js-dropdown-assignee .filter-dropdown-item', text: 'Any').click
find('#js-dropdown-my-reaction .filter-dropdown-item', text: 'Any').click
 
expect(page).to have_css(js_dropdown_emoji, visible: false)
expect_tokens([emoji_token('any')])
expect_tokens([reaction_token('any', false)])
expect_filtered_search_input_empty
end
 
Loading
Loading
@@ -143,7 +143,7 @@ describe 'Dropdown emoji', :js do
wait_for_requests
 
expect(page).to have_css(js_dropdown_emoji, visible: false)
expect_tokens([emoji_token('thumbsup')])
expect_tokens([reaction_token('thumbsup')])
expect_filtered_search_input_empty
end
end
Loading
Loading
Loading
Loading
@@ -24,13 +24,29 @@ describe Awardable do
end
end
 
describe ".awarded" do
describe "#awarded" do
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]
expect(Issue.awarded(award_emoji2.user, "thumbsup")).to eq [issue2]
expect(Issue.awarded(award_emoji2.user, "thumbsdown")).to be_empty
end
it "filters by user and any emoji" do
issue3 = create(:issue)
create(:award_emoji, awardable: issue3, name: "star", user: award_emoji.user)
create(:award_emoji, awardable: issue3, name: "star", user: award_emoji2.user)
expect(Issue.awarded(award_emoji.user)).to eq [issue, issue3]
expect(Issue.awarded(award_emoji2.user)).to eq [issue2, issue3]
end
end
describe "#not_awarded" do
it "returns issues not awarded by user" do
expect(Issue.not_awarded(award_emoji.user)).to eq [issue2]
expect(Issue.not_awarded(award_emoji2.user)).to eq [issue]
end
end
end
 
Loading
Loading
Loading
Loading
@@ -198,7 +198,7 @@ describe API::Issues do
 
it 'returns issues reacted by the authenticated user' do
issue2 = create(:issue, project: project, author: user, assignees: [user])
award_emoji = create(:award_emoji, awardable: issue2, user: user2, name: 'star')
create(:award_emoji, awardable: issue2, user: user2, name: 'star')
 
create(:award_emoji, awardable: issue, user: user2, name: 'thumbsup')
 
Loading
Loading
Loading
Loading
@@ -120,8 +120,12 @@ module FilteredSearchHelpers
create_token('Label', label_name, symbol)
end
 
def emoji_token(emoji_name = nil)
{ name: 'My-Reaction', emoji_name: emoji_name }
def reaction_token(reaction_name = nil, is_emoji = true)
if is_emoji
{ name: 'My-Reaction', emoji_name: reaction_name }
else
create_token('My-Reaction', reaction_name)
end
end
 
def default_placeholder
Loading
Loading
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