Skip to content
Snippets Groups Projects
Commit 9da03c45 authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre
Browse files

Mark pending tasks for the current user as done when he edit a note

parent 49cd1965
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -7,6 +7,10 @@ module Notes
note.create_new_cross_references!(current_user)
note.reset_events_cache
 
if note.previous_changes.include?('note')
TaskService.new.update_note(note, current_user)
end
note
end
end
Loading
Loading
Loading
Loading
@@ -54,6 +54,17 @@ class TaskService
end
end
 
# When update a note we should:
#
# * mark all pending tasks related to the noteable for the current user as done
#
def update_note(note, current_user)
# Skip system notes, like status changes and cross-references
unless note.system
mark_as_done(note.noteable, current_user)
end
end
private
 
def create_task(project, target, author, user, action)
Loading
Loading
require 'spec_helper'
describe Notes::UpdateService, services: true do
let(:project) { create(:empty_project) }
let(:user) { create(:user) }
let(:user2) { create(:user) }
let(:issue) { create(:issue, project: project) }
let(:note) { create(:note, project: project, noteable: issue, author: user, note: 'Old note') }
before do
project.team << [user, :master]
project.team << [user2, :developer]
end
describe '#execute' do
def update_note(opts)
@note = Notes::UpdateService.new(project, user, opts).execute(note)
@note.reload
end
context 'task queue' do
let!(:task) { create(:pending_assigned_task, user: user, project: project, target: issue, author: user2) }
context 'when the note change' do
before do
update_note({ note: 'New note' })
end
it 'marks pending tasks as done' do
expect(task.reload).to be_done
end
end
context 'when the note does not change' do
before do
update_note({ note: 'Old note' })
end
it 'keep pending tasks' do
expect(task.reload).to be_pending
end
end
end
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