Separate observing of Note and MergeRequests
Created by: robbkidd
It's been awhile since I tackled the observers. Note
and MergeRequest
had not seen any love yet and were still mashed together in MailerObserver
. Here is my latest on fixing that with separate observers for Note
and MergeRequest
.
-
Move
is_assigned?
andis_being_xx?
methods toIssueCommonality
This is behavior merge requests have in common with issues. Moved methods to
IssueCommonality
role. Put specs directly intomerge_request_spec.rb
because setup differs for issues and MRs specifically in the "closed" factory to use. -
Add
MergeRequestObserver
. ParallelsIssueObserver
in almost every way.Ripe for refactoring, but tricky because of the different mailer methods and views.
-
Rename
MailerObserver
toNoteObserver
With merge request observing moved out of
MailerObserver
, all that was left wasNote
logic. Renamed toNoteObserver
, added tests and updated application config for new observer names. RefactoredNoteObserver
to use the note's author and not rely oncurrent_user
. -
Set
current_user
forMergeRequestObserver
IssueObserver
andMergeRequestObserver
are the only observers that need a reference to thecurrent_user
that they cannot look up on the objects they are observing.
Merge request reports
Activity
- app/observers/merge_request_observer.rb 0 → 100644
9 10 def after_update(merge_request) 11 send_reassigned_email(merge_request) if merge_request.is_being_reassigned? 12 13 status = nil 14 status = 'closed' if merge_request.is_being_closed? 15 status = 'reopened' if merge_request.is_being_reopened? 16 if status 17 Note.create_status_change_note(merge_request, current_user, status) 18 end 19 end 20 21 protected 22 23 def send_reassigned_email(merge_request) 24 recipients_ids = merge_request.assignee_id_was, merge_request.assignee_id - app/observers/merge_request_observer.rb 0 → 100644
9 10 def after_update(merge_request) 11 send_reassigned_email(merge_request) if merge_request.is_being_reassigned? 12 13 status = nil 14 status = 'closed' if merge_request.is_being_closed? 15 status = 'reopened' if merge_request.is_being_reopened? 16 if status 17 Note.create_status_change_note(merge_request, current_user, status) 18 end 19 end 20 21 protected 22 23 def send_reassigned_email(merge_request) 24 recipients_ids = merge_request.assignee_id_was, merge_request.assignee_id - app/observers/merge_request_observer.rb 0 → 100644
9 10 def after_update(merge_request) 11 send_reassigned_email(merge_request) if merge_request.is_being_reassigned? 12 13 status = nil 14 status = 'closed' if merge_request.is_being_closed? 15 status = 'reopened' if merge_request.is_being_reopened? 16 if status 17 Note.create_status_change_note(merge_request, current_user, status) 18 end 19 end 20 21 protected 22 23 def send_reassigned_email(merge_request) 24 recipients_ids = merge_request.assignee_id_was, merge_request.assignee_id