diff options
-rw-r--r-- | app/controllers/concerns/toggle_award_emoji.rb | 2 | ||||
-rw-r--r-- | app/controllers/projects/notes_controller.rb | 13 | ||||
-rw-r--r-- | app/models/award_emoji.rb | 9 | ||||
-rw-r--r-- | app/services/notes/create_service.rb | 6 | ||||
-rw-r--r-- | app/services/toggle_award_emoji_service.rb | 9 | ||||
-rw-r--r-- | app/views/projects/merge_requests/_merge_request.html.haml | 6 | ||||
-rw-r--r-- | app/views/projects/merge_requests/_merge_requests.html.haml | 1 | ||||
-rw-r--r-- | spec/features/notes_on_merge_requests_spec.rb | 8 | ||||
-rw-r--r-- | spec/services/notes/create_service_spec.rb | 2 | ||||
-rw-r--r-- | spec/services/toggle_award_emoji_service_spec.rb | 33 |
10 files changed, 23 insertions, 66 deletions
diff --git a/app/controllers/concerns/toggle_award_emoji.rb b/app/controllers/concerns/toggle_award_emoji.rb index 9cd522d1c30..09ff44f291b 100644 --- a/app/controllers/concerns/toggle_award_emoji.rb +++ b/app/controllers/concerns/toggle_award_emoji.rb @@ -7,7 +7,9 @@ module ToggleAwardEmoji def toggle_award_emoji name = params.require(:name) + awardable.toggle_award_emoji(name, current_user) + TodoService.new.new_award_emoji(awardable, current_user) render json: { ok: true } end diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb index eb5137fe999..b097f609c63 100644 --- a/app/controllers/projects/notes_controller.rb +++ b/app/controllers/projects/notes_controller.rb @@ -22,10 +22,8 @@ class Projects::NotesController < Projects::ApplicationController def create @note = Notes::CreateService.new(project, current_user, note_params).execute - @note = @note.is_a?(AwardEmoji) ? @note.to_note_json : note_json(@note) - respond_to do |format| - format.json { render json: @note } + format.json { render json: note_json(@note) } format.html { redirect_back_or_default } end end @@ -109,7 +107,14 @@ class Projects::NotesController < Projects::ApplicationController end def note_json(note) - if note.valid? + if note.is_a?(AwardEmoji) + { + valid: note.valid?, + award: true, + id: note.id, + name: note.name + } + elsif note.valid? { valid: true, id: note.id, diff --git a/app/models/award_emoji.rb b/app/models/award_emoji.rb index 44a9b55a8a6..59c7d87f5df 100644 --- a/app/models/award_emoji.rb +++ b/app/models/award_emoji.rb @@ -23,13 +23,4 @@ class AwardEmoji < ActiveRecord::Base def upvote? self.name == UPVOTE_NAME end - - def to_note_json - { - valid: valid?, - award: true, - id: id, - name: name - } - end end diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb index 509deb898b1..44ff96f9bd8 100644 --- a/app/services/notes/create_service.rb +++ b/app/services/notes/create_service.rb @@ -6,8 +6,10 @@ module Notes note.system = false if note.award_emoji? - return ToggleAwardEmojiService.new(project, current_user, params). - execute(note.noteable, note.award_emoji_name) + noteable = note.noteable + todo_service.new_award_emoji(noteable, current_user) + + return noteable.create_award_emoji(note.award_emoji_name, current_user) end return unless valid_project?(note) diff --git a/app/services/toggle_award_emoji_service.rb b/app/services/toggle_award_emoji_service.rb deleted file mode 100644 index 1820f57f564..00000000000 --- a/app/services/toggle_award_emoji_service.rb +++ /dev/null @@ -1,9 +0,0 @@ -require_relative 'base_service' - -class ToggleAwardEmojiService < BaseService - def execute(awardable, emoji) - todo_service.new_award_emoji(awardable, current_user) - - awardable.toggle_award_emoji(emoji, current_user) - end -end diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml index eaee5180176..bcc6c4f2d5f 100644 --- a/app/views/projects/merge_requests/_merge_request.html.haml +++ b/app/views/projects/merge_requests/_merge_request.html.haml @@ -37,9 +37,9 @@ - note_count = merge_request.mr_and_commit_notes.user.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 + = 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} · diff --git a/app/views/projects/merge_requests/_merge_requests.html.haml b/app/views/projects/merge_requests/_merge_requests.html.haml index 5473fa19166..446887774a4 100644 --- a/app/views/projects/merge_requests/_merge_requests.html.haml +++ b/app/views/projects/merge_requests/_merge_requests.html.haml @@ -6,4 +6,3 @@ - if @merge_requests.present? = paginate @merge_requests, theme: "gitlab" - diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb index 9e2bdd7f5bb..c93497970d7 100644 --- a/spec/features/notes_on_merge_requests_spec.rb +++ b/spec/features/notes_on_merge_requests_spec.rb @@ -8,12 +8,12 @@ describe 'Comments', feature: true do it 'excludes award_emoji from comment count' do merge_request = create(:merge_request) project = merge_request.source_project - create(:award_emoji, awardable: merge_request, project: project) + create(:award_emoji, awardable: merge_request) login_as :admin visit namespace_project_merge_requests_path(project.namespace, project) - expect(merge_request.mr_and_commit_notes.count).to eq 1 + expect(merge_request.mr_and_commit_notes.count).to eq 0 expect(page.all('.merge-request-no-comments').first.text).to eq "0" end end @@ -146,11 +146,11 @@ describe 'Comments', feature: true do describe 'comment info' do it 'excludes award_emoji from comment count' do - create(:award_emoji, awardable: merge_request, project: project) + create(:award_emoji, awardable: merge_request) visit namespace_project_merge_request_path(project.namespace, project, merge_request) - expect(merge_request.mr_and_commit_notes.count).to eq 2 + expect(merge_request.mr_and_commit_notes.count).to eq 1 expect(find('.notes-tab span.badge').text).to eq "1" end end diff --git a/spec/services/notes/create_service_spec.rb b/spec/services/notes/create_service_spec.rb index 4e62e3975ea..35f576874b8 100644 --- a/spec/services/notes/create_service_spec.rb +++ b/spec/services/notes/create_service_spec.rb @@ -59,7 +59,7 @@ describe Notes::CreateService, services: true do noteable_id: issue.id } - expect_any_instance_of(ToggleAwardEmojiService).to receive(:execute).with(issue, "thumbsup") + expect_any_instance_of(TodoService).to receive(:new_award_emoji).with(issue, user) Notes::CreateService.new(project, user, opts).execute end diff --git a/spec/services/toggle_award_emoji_service_spec.rb b/spec/services/toggle_award_emoji_service_spec.rb deleted file mode 100644 index b9d63bd70a7..00000000000 --- a/spec/services/toggle_award_emoji_service_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require 'spec_helper' - -describe ToggleAwardEmoji, services: true do - let(:project) { create(:project) } - let(:user) { create(:user) } - let(:issue) { create(:issue, project: project) } - - before do - project.team << [user, :master] - end - - describe '#execute' do - it 'removes related todos' do - expect_any_instance_of(TodoService).to receive(:new_award_emoji).with(issue, user) - - ToggleAwardEmojiService.new(project, user).execute(issue, "thumbsdown") - end - - context 'when the emoji is set' do - it 'removes the emoji' do - create(:award_emoji, awardable: issue, user: user) - - expect { ToggleAwardEmojiService.new(project, user).execute(issue, "thumbsup") }.to change { AwardEmoji.count }.by(-1) - end - end - - context 'when the award is not set yet' do - it 'awards the emoji' do - expect { ToggleAwardEmojiService.new(project, user).execute(issue, "thumbsup") }.to change { AwardEmoji.count }.by(1) - end - end - end -end |