Commit 65cd9829eecd2485f17eaadf84107631d5a723d9

Authored by Dmitriy Zaporozhets
1 parent 6ae25290

Remove MergeRequest observer

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/observers/merge_request_observer.rb
@@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
1 -class MergeRequestObserver < BaseObserver  
2 - def after_create(merge_request)  
3 - event_service.open_mr(merge_request, current_user)  
4 - notification.new_merge_request(merge_request, current_user)  
5 - merge_request.create_cross_references!(merge_request.project, current_user)  
6 - execute_hooks(merge_request)  
7 - end  
8 -  
9 - def after_close(merge_request, transition)  
10 - event_service.close_mr(merge_request, current_user)  
11 - notification.close_mr(merge_request, current_user)  
12 - create_note(merge_request)  
13 - execute_hooks(merge_request)  
14 - end  
15 -  
16 - def after_reopen(merge_request, transition)  
17 - event_service.reopen_mr(merge_request, current_user)  
18 - create_note(merge_request)  
19 - execute_hooks(merge_request)  
20 - merge_request.reload_code  
21 - merge_request.mark_as_unchecked  
22 - end  
23 -  
24 - def after_update(merge_request)  
25 - notification.reassigned_merge_request(merge_request, current_user) if merge_request.is_being_reassigned?  
26 -  
27 - merge_request.notice_added_references(merge_request.project, current_user)  
28 - execute_hooks(merge_request)  
29 - end  
30 -  
31 - private  
32 -  
33 - # Create merge request note with service comment like 'Status changed to closed'  
34 - def create_note(merge_request)  
35 - Note.create_status_change_note(merge_request, merge_request.target_project, current_user, merge_request.state, nil)  
36 - end  
37 -  
38 - def execute_hooks(merge_request)  
39 - if merge_request.project  
40 - merge_request.project.execute_hooks(merge_request.to_hook_data, :merge_request_hooks)  
41 - end  
42 - end  
43 -end  
config/application.rb
@@ -21,7 +21,6 @@ module Gitlab @@ -21,7 +21,6 @@ module Gitlab
21 # Activate observers that should always be running. 21 # Activate observers that should always be running.
22 config.active_record.observers = :milestone_observer, 22 config.active_record.observers = :milestone_observer,
23 :project_activity_cache_observer, 23 :project_activity_cache_observer,
24 - :merge_request_observer,  
25 :note_observer, 24 :note_observer,
26 :project_observer, 25 :project_observer,
27 :system_hook_observer, 26 :system_hook_observer,
spec/observers/merge_request_observer_spec.rb
@@ -1,131 +0,0 @@ @@ -1,131 +0,0 @@
1 -require 'spec_helper'  
2 -  
3 -describe MergeRequestObserver do  
4 - let(:some_user) { create :user }  
5 - let(:assignee) { create :user }  
6 - let(:author) { create :user }  
7 - let(:project) { create :project }  
8 - let(:mr_mock) { double(:merge_request, id: 42, assignee: assignee, author: author).as_null_object }  
9 - let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, source_project: project) }  
10 - let(:unassigned_mr) { create(:merge_request, author: author, source_project: project) }  
11 - let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, source_project: project) }  
12 - let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, source_project: project) }  
13 -  
14 - before { subject.stub(:current_user).and_return(some_user) }  
15 - before { subject.stub(notification: double('NotificationService').as_null_object) }  
16 - before { mr_mock.stub(:author_id) }  
17 - before { mr_mock.stub(:source_project) }  
18 - before { mr_mock.stub(:source_project) }  
19 - before { mr_mock.stub(:project) }  
20 - before { mr_mock.stub(:create_cross_references!).and_return(true) }  
21 - before { Repository.any_instance.stub(commit: nil) }  
22 -  
23 - before(:each) { enable_observers }  
24 - after(:each) { disable_observers }  
25 -  
26 - subject { MergeRequestObserver.instance }  
27 -  
28 - describe '#after_create' do  
29 - it 'trigger notification service' do  
30 - subject.should_receive(:notification)  
31 - subject.after_create(mr_mock)  
32 - end  
33 -  
34 - it 'creates cross-reference notes' do  
35 - project = create :project  
36 - mr_mock.stub(title: "this mr references !#{assigned_mr.id}", project: project)  
37 - mr_mock.should_receive(:create_cross_references!).with(project, some_user)  
38 -  
39 - subject.after_create(mr_mock)  
40 - end  
41 - end  
42 -  
43 - context '#after_update' do  
44 - before(:each) do  
45 - mr_mock.stub(:is_being_reassigned?).and_return(false)  
46 - mr_mock.stub(:notice_added_references)  
47 - end  
48 -  
49 - it 'is called when a merge request is changed' do  
50 - changed = create(:merge_request, source_project: project)  
51 - subject.should_receive(:after_update)  
52 -  
53 - MergeRequest.observers.enable :merge_request_observer do  
54 - changed.title = 'I changed'  
55 - changed.save  
56 - end  
57 - end  
58 -  
59 - it 'checks for new references' do  
60 - mr_mock.should_receive(:notice_added_references)  
61 -  
62 - subject.after_update(mr_mock)  
63 - end  
64 -  
65 - context 'a notification' do  
66 - it 'is sent if the merge request is being reassigned' do  
67 - mr_mock.should_receive(:is_being_reassigned?).and_return(true)  
68 - subject.should_receive(:notification)  
69 -  
70 - subject.after_update(mr_mock)  
71 - end  
72 -  
73 - it 'is not sent if the merge request is not being reassigned' do  
74 - mr_mock.should_receive(:is_being_reassigned?).and_return(false)  
75 - subject.should_not_receive(:notification)  
76 -  
77 - subject.after_update(mr_mock)  
78 - end  
79 - end  
80 - end  
81 -  
82 - context '#after_close' do  
83 - context 'a status "closed"' do  
84 - it 'note is created if the merge request is being closed' do  
85 - Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.source_project, some_user, 'closed', nil)  
86 -  
87 - assigned_mr.close  
88 - end  
89 -  
90 - it 'notification is delivered only to author if the merge request is being closed' do  
91 - Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.source_project, some_user, 'closed', nil)  
92 -  
93 - unassigned_mr.close  
94 - end  
95 - end  
96 - end  
97 -  
98 - context '#after_reopen' do  
99 - context 'a status "reopened"' do  
100 - it 'note is created if the merge request is being reopened' do  
101 - Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.source_project, some_user, 'reopened', nil)  
102 -  
103 - closed_assigned_mr.reopen  
104 - end  
105 -  
106 - it 'notification is delivered only to author if the merge request is being reopened' do  
107 - Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.source_project, some_user, 'reopened', nil)  
108 -  
109 - closed_unassigned_mr.reopen  
110 - end  
111 - end  
112 - end  
113 -  
114 - describe "Merge Request created" do  
115 - def self.it_should_be_valid_event  
116 - it { @event.should_not be_nil }  
117 - it { @event.should_not be_nil }  
118 - it { @event.project.should == project }  
119 - it { @event.project.should == project }  
120 - end  
121 -  
122 - before do  
123 - @merge_request = create(:merge_request, source_project: project, target_project: project)  
124 - @event = Event.last  
125 - end  
126 -  
127 - it_should_be_valid_event  
128 - it { @event.action.should == Event::CREATED }  
129 - it { @event.target.should == @merge_request }  
130 - end  
131 -end