summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/concerns/awardable.rb10
-rw-r--r--app/models/note.rb4
-rw-r--r--app/models/user.rb2
-rw-r--r--app/services/notes/create_service.rb2
-rw-r--r--app/services/toggle_award_emoji_service.rb12
-rw-r--r--app/views/award_emoji/_awards_block.html.haml4
-rw-r--r--app/views/projects/issues/_issue.html.haml14
-rw-r--r--app/views/projects/merge_requests/_merge_request.html.haml14
-rw-r--r--db/migrate/20160416182152_convert_award_note_to_emoji_award.rb10
-rw-r--r--lib/api/entities.rb3
-rw-r--r--spec/controllers/projects/issues_controller_spec.rb6
-rw-r--r--spec/features/issues/award_emoji_spec.rb2
-rw-r--r--spec/models/concerns/issuable_spec.rb35
-rw-r--r--spec/requests/api/issues_spec.rb1
-rw-r--r--spec/requests/api/merge_requests_spec.rb1
15 files changed, 23 insertions, 97 deletions
diff --git a/app/models/concerns/awardable.rb b/app/models/concerns/awardable.rb
index b4e3e9eb3dd..aa4b4201250 100644
--- a/app/models/concerns/awardable.rb
+++ b/app/models/concerns/awardable.rb
@@ -34,23 +34,23 @@ module Awardable
end
end
- def grouped_awards(with_thumbs = true)
+ def grouped_awards(with_thumbs: true)
awards = award_emoji.group_by(&:name)
if with_thumbs
- awards[AwardEmoji::UPVOTE_NAME] ||= AwardEmoji.none
- awards[AwardEmoji::DOWNVOTE_NAME] ||= AwardEmoji.none
+ awards[AwardEmoji::UPVOTE_NAME] ||= []
+ awards[AwardEmoji::DOWNVOTE_NAME] ||= []
end
awards
end
def downvotes
- award_emoji.where(name: AwardEmoji::DOWNVOTE_NAME).count
+ award_emoji.downvotes.count
end
def upvotes
- award_emoji.where(name: AwardEmoji::UPVOTE_NAME).count
+ award_emoji.upvotes.count
end
def emoji_awardable?
diff --git a/app/models/note.rb b/app/models/note.rb
index 0b038edb47b..f9040f9f364 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -323,10 +323,6 @@ class Note < ActiveRecord::Base
award_emoji_supported? && contains_emoji_only?
end
- def create_award_emoji
- self.noteable.award_emoji(award_emoji_name, author)
- end
-
def clear_blank_line_code!
self.line_code = nil if self.line_code.blank?
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 5ca53e7c64a..52847212619 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -79,7 +79,7 @@ class User < ActiveRecord::Base
has_many :builds, dependent: :nullify, class_name: 'Ci::Build'
has_many :todos, dependent: :destroy
has_many :notification_settings, dependent: :destroy
- has_many :award_emoji, as: :awardable, dependent: :destroy
+ has_many :award_emoji, as: :awardable, dependent: :destroy
#
# Validations
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb
index da2a774b70d..bbf7889166d 100644
--- a/app/services/notes/create_service.rb
+++ b/app/services/notes/create_service.rb
@@ -7,7 +7,7 @@ module Notes
if note.award_emoji?
return ToggleAwardEmojiService.new(project, current_user, params).
- execute(note.noteable, note.note)
+ execute(note.award_emoji_name, note.note)
end
return unless valid_project?(note)
diff --git a/app/services/toggle_award_emoji_service.rb b/app/services/toggle_award_emoji_service.rb
index b77b4e79bf2..1820f57f564 100644
--- a/app/services/toggle_award_emoji_service.rb
+++ b/app/services/toggle_award_emoji_service.rb
@@ -1,21 +1,9 @@
require_relative 'base_service'
class ToggleAwardEmojiService < BaseService
- # For an award emoji being posted we should:
- # - Mark the TODO as done for this issuable (skip on snippets)
- # - Save the award emoji
def execute(awardable, emoji)
todo_service.new_award_emoji(awardable, current_user)
- # Needed if its posted as a note containing only :+1:
- emoji = award_emoji_name(emoji) if emoji.start_with? ':'
awardable.toggle_award_emoji(emoji, current_user)
end
-
- private
-
- def award_emoji_name(emoji)
- original_name = emoji.match(Banzai::Filter::EmojiFilter.emoji_pattern)[1]
- Gitlab::AwardEmoji.normalize_emoji_name(original_name)
- end
end
diff --git a/app/views/award_emoji/_awards_block.html.haml b/app/views/award_emoji/_awards_block.html.haml
index b57c9afcbd2..86931c70f33 100644
--- a/app/views/award_emoji/_awards_block.html.haml
+++ b/app/views/award_emoji/_awards_block.html.haml
@@ -1,7 +1,7 @@
-- grouped_emojis = awardable.grouped_awards(inline)
+- grouped_emojis = awardable.grouped_awards(with_thumbs: inline)
.awards.js-awards-block{ class: ("hidden" if !inline && grouped_emojis.size == 0), data: { award_url: url_for([:toggle_award_emoji, @project.namespace.becomes(Namespace), @project, awardable]) } }
- awards_sort(grouped_emojis).each do |emoji, awards|
- %button.btn.award-control.js-emoji-btn.has-tooltip{ type: "button", class: (award_active_class(awards, current_user)),data: { placement: "bottom", original_title: award_user_list(awards, current_user)} }
+ %button.btn.award-control.js-emoji-btn.has-tooltip{ type: "button", class: (award_active_class(awards, current_user)),data: { placement: "bottom", title: award_user_list(awards, current_user) } }
= emoji_icon(emoji)
%span.award-control-text.js-counter
= awards.count
diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml
index 57ad2ec1852..dec3e8809ce 100644
--- a/app/views/projects/issues/_issue.html.haml
+++ b/app/views/projects/issues/_issue.html.haml
@@ -28,16 +28,10 @@
= downvotes
- note_count = issue.notes.user.count
- - if note_count > 0
- %li
- = link_to issue_path(issue) + "#notes" do
- = icon('comments')
- = note_count
- - else
- %li
- = link_to issue_path(issue) + "#notes", class: "issue-no-comments" do
- = icon('comments')
- = note_count
+ %li
+ = link_to issue_path(issue, anchor: 'notes'), class: ('issue-no-comments' if note_count.zero?) do
+ = icon('comments')
+ = note_count
.issue-info
#{issue.to_reference} &middot;
diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml
index 391193eed6c..eaee5180176 100644
--- a/app/views/projects/merge_requests/_merge_request.html.haml
+++ b/app/views/projects/merge_requests/_merge_request.html.haml
@@ -36,16 +36,10 @@
= downvotes
- note_count = merge_request.mr_and_commit_notes.user.count
- - if note_count > 0
- %li
- = link_to merge_request_path(merge_request) + "#notes" do
- = icon('comments')
- = note_count
- - else
- %li
- = link_to merge_request_path(merge_request) + "#notes", class: "merge-request-no-comments" do
- = icon('comments')
- = note_count
+ %li
+ = link_to merge_request_path(merge_request, anchor: 'notes'), class: ('merge-request-no-comments' if note_count.zero?) do
+ = icon('comments')
+ = note_count
.merge-request-info
#{merge_request.to_reference} &middot;
diff --git a/db/migrate/20160416182152_convert_award_note_to_emoji_award.rb b/db/migrate/20160416182152_convert_award_note_to_emoji_award.rb
index 76f4a3aa6ae..d2efbd0abea 100644
--- a/db/migrate/20160416182152_convert_award_note_to_emoji_award.rb
+++ b/db/migrate/20160416182152_convert_award_note_to_emoji_award.rb
@@ -3,15 +3,5 @@ class ConvertAwardNoteToEmojiAward < ActiveRecord::Migration
def up
execute "INSERT INTO award_emoji (awardable_type, awardable_id, user_id, name, created_at, updated_at) (SELECT noteable_type, noteable_id, author_id, note, created_at, updated_at FROM notes WHERE is_award = true)"
end
-
- def down
- execute <<-SQL
- INSERT INTO notes (noteable_type, noteable_id, author_id, note, created_at, updated_at, is_award)
- (SELECT awardable_type, awardable_id, user_id, name, created_at, updated_at, TRUE
- FROM award_emoji
- WHERE awardable_type IN ('Issue', 'MergeRequest')
- )
- SQL
- end
end
end
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index f91ca9d5805..c210cfe513f 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -174,7 +174,7 @@ module API
expose :subscribed do |issue, options|
issue.subscribed?(options[:current_user])
end
- expose :user_notes_count
+ expose :upvotes, :downvotes
end
class MergeRequest < ProjectEntity
@@ -191,7 +191,6 @@ module API
expose :subscribed do |merge_request, options|
merge_request.subscribed?(options[:current_user])
end
- expose :user_notes_count
end
class MergeRequestChanges < MergeRequest
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
index 30d296fdad0..706f538f262 100644
--- a/spec/controllers/projects/issues_controller_spec.rb
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -257,9 +257,9 @@ describe Projects::IssuesController do
project.team << [user, :developer]
end
- it "yields status code 200" do
- post(:toggle_award_emoji, namespace_id: project.namespace.path,
- project_id: project.path, id: issue.iid, name: "thumbsup")
+ it "toggles the award emoji" do
+ expect { post(:toggle_award_emoji, namespace_id: project.namespace.path,
+ project_id: project.path, id: issue.iid, name: "thumbsup") }.to change { AwardEmoji.count }.by(1)
expect(response.status).to eq(200)
end
diff --git a/spec/features/issues/award_emoji_spec.rb b/spec/features/issues/award_emoji_spec.rb
index 41af789aae2..07a854ea014 100644
--- a/spec/features/issues/award_emoji_spec.rb
+++ b/spec/features/issues/award_emoji_spec.rb
@@ -28,7 +28,6 @@ describe 'Awards Emoji', feature: true do
end
context 'click the thumbsup emoji' do
-
it 'should increment the thumbsup emoji', js: true do
find('[data-emoji="thumbsup"]').click
sleep 2
@@ -41,7 +40,6 @@ describe 'Awards Emoji', feature: true do
end
context 'click the thumbsdown emoji' do
-
it 'should increment the thumbsdown emoji', js: true do
find('[data-emoji="thumbsdown"]').click
sleep 2
diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb
index 568bf4c9324..ebc3968023d 100644
--- a/spec/models/concerns/issuable_spec.rb
+++ b/spec/models/concerns/issuable_spec.rb
@@ -203,11 +203,10 @@ describe Issue, "Issuable" do
end
end
- # TODO ZJ
describe "votes" do
before do
- create!(:award_emoji, :upvote, awardable: issue)
- create!(:award_emoji, :downvote, awardable: issue)
+ create(:award_emoji, :upvote, awardable: issue)
+ create(:award_emoji, :downvote, awardable: issue)
end
it "returns correct values" do
@@ -215,34 +214,4 @@ describe Issue, "Issuable" do
expect(issue.downvotes).to eq(1)
end
end
-
- describe ".with_label" do
- let(:project) { create(:project, :public) }
- let(:bug) { create(:label, project: project, title: 'bug') }
- let(:feature) { create(:label, project: project, title: 'feature') }
- let(:enhancement) { create(:label, project: project, title: 'enhancement') }
- let(:issue1) { create(:issue, title: "Bugfix1", project: project) }
- let(:issue2) { create(:issue, title: "Bugfix2", project: project) }
- let(:issue3) { create(:issue, title: "Feature1", project: project) }
-
- before(:each) do
- issue1.labels << bug
- issue1.labels << feature
- issue2.labels << bug
- issue2.labels << enhancement
- issue3.labels << feature
- end
-
- it 'finds the correct issue containing just enhancement label' do
- expect(Issue.with_label(enhancement.title)).to match_array([issue2])
- end
-
- it 'finds the correct issues containing the same label' do
- expect(Issue.with_label(bug.title)).to match_array([issue1, issue2])
- end
-
- it 'finds the correct issues containing only both labels' do
- expect(Issue.with_label([bug.title, enhancement.title])).to match_array([issue2])
- end
- end
end
diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb
index 9dd43f4fab3..7bc7e319ff1 100644
--- a/spec/requests/api/issues_spec.rb
+++ b/spec/requests/api/issues_spec.rb
@@ -249,7 +249,6 @@ describe API::API, api: true do
expect(json_response['milestone']).to be_a Hash
expect(json_response['assignee']).to be_a Hash
expect(json_response['author']).to be_a Hash
- expect(json_response['user_notes_count']).to be(1)
end
it "should return a project issue by id" do
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index 4b0111df149..6392bdb1c91 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -138,7 +138,6 @@ describe API::API, api: true do
expect(json_response['work_in_progress']).to be_falsy
expect(json_response['merge_when_build_succeeds']).to be_falsy
expect(json_response['merge_status']).to eq('can_be_merged')
- expect(json_response['user_notes_count']).to be(2)
end
it "should return merge_request" do