Merge branch '38208-due-dates-system-notes' into 'master'
Add system note when due date is changed Closes #38208 See merge request gitlab-org/gitlab-ce!21628
This commit is contained in:
commit
30227f8e8c
6 changed files with 57 additions and 2 deletions
|
@ -21,7 +21,8 @@ module SystemNoteHelper
|
|||
'outdated' => 'pencil-square',
|
||||
'duplicate' => 'issue-duplicate',
|
||||
'locked' => 'lock',
|
||||
'unlocked' => 'lock-open'
|
||||
'unlocked' => 'lock-open',
|
||||
'due_date' => 'calendar'
|
||||
}.freeze
|
||||
|
||||
def system_note_icon_name(note)
|
||||
|
|
|
@ -15,7 +15,7 @@ class SystemNoteMetadata < ActiveRecord::Base
|
|||
commit description merge confidential visible label assignee cross_reference
|
||||
title time_tracking branch milestone discussion task moved
|
||||
opened closed merged duplicate locked unlocked
|
||||
outdated tag
|
||||
outdated tag due_date
|
||||
].freeze
|
||||
|
||||
validates :note, presence: true
|
||||
|
|
|
@ -17,6 +17,7 @@ module Issuable
|
|||
create_labels_note(old_labels) if issuable.labels != old_labels
|
||||
create_discussion_lock_note if issuable.previous_changes.include?('discussion_locked')
|
||||
create_milestone_note if issuable.previous_changes.include?('milestone_id')
|
||||
create_due_date_note if issuable.previous_changes.include?('due_date')
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -90,6 +91,10 @@ module Issuable
|
|||
SystemNoteService.change_milestone(issuable, issuable.project, current_user, issuable.milestone)
|
||||
end
|
||||
|
||||
def create_due_date_note
|
||||
SystemNoteService.change_due_date(issuable, issuable.project, current_user, issuable.due_date)
|
||||
end
|
||||
|
||||
def create_discussion_lock_note
|
||||
SystemNoteService.discussion_lock(issuable, current_user)
|
||||
end
|
||||
|
|
|
@ -119,6 +119,26 @@ module SystemNoteService
|
|||
create_note(NoteSummary.new(noteable, project, author, body, action: 'milestone'))
|
||||
end
|
||||
|
||||
# Called when the due_date of a Noteable is changed
|
||||
#
|
||||
# noteable - Noteable object
|
||||
# project - Project owning noteable
|
||||
# author - User performing the change
|
||||
# due_date - Due date being assigned, or nil
|
||||
#
|
||||
# Example Note text:
|
||||
#
|
||||
# "removed due date"
|
||||
#
|
||||
# "changed due date to September 20, 2018"
|
||||
#
|
||||
# Returns the created Note object
|
||||
def change_due_date(noteable, project, author, due_date)
|
||||
body = due_date ? "changed due date to #{due_date.to_s(:long)}" : 'removed due date'
|
||||
|
||||
create_note(NoteSummary.new(noteable, project, author, body, action: 'due_date'))
|
||||
end
|
||||
|
||||
# Called when the estimated time of a Noteable is changed
|
||||
#
|
||||
# noteable - Noteable object
|
||||
|
|
5
changelogs/unreleased/38208-due-dates-system-notes.yml
Normal file
5
changelogs/unreleased/38208-due-dates-system-notes.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add system note when due date is changed
|
||||
merge_request:
|
||||
author: Eva Kadlecova
|
||||
type: added
|
|
@ -249,6 +249,30 @@ describe SystemNoteService do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.change_due_date' do
|
||||
subject { described_class.change_due_date(noteable, project, author, due_date) }
|
||||
|
||||
let(:due_date) { Date.today }
|
||||
|
||||
it_behaves_like 'a system note' do
|
||||
let(:action) { 'due_date' }
|
||||
end
|
||||
|
||||
context 'when due date added' do
|
||||
it 'sets the note text' do
|
||||
expect(subject.note).to eq "changed due date to #{Date.today.to_s(:long)}"
|
||||
end
|
||||
end
|
||||
|
||||
context 'when due date removed' do
|
||||
let(:due_date) { nil }
|
||||
|
||||
it 'sets the note text' do
|
||||
expect(subject.note).to eq 'removed due date'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.change_status' do
|
||||
subject { described_class.change_status(noteable, project, author, status, source) }
|
||||
|
||||
|
|
Loading…
Reference in a new issue