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   -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 21 # Activate observers that should always be running.
22 22 config.active_record.observers = :milestone_observer,
23 23 :project_activity_cache_observer,
24   - :merge_request_observer,
25 24 :note_observer,
26 25 :project_observer,
27 26 :system_hook_observer,
... ...
spec/observers/merge_request_observer_spec.rb
... ... @@ -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