Commit c7bd99b04053421726012d77f85919b1d6fc0387
1 parent
e3e8b9fc
Exists in
master
and in
4 other branches
refactor issue observer spec
Showing
2 changed files
with
16 additions
and
66 deletions
Show diff stats
spec/observers/issue_observer_spec.rb
@@ -11,7 +11,9 @@ describe IssueObserver do | @@ -11,7 +11,9 @@ describe IssueObserver do | ||
11 | let(:closed_unassigned_issue) { create(:closed_issue, author: author) } | 11 | let(:closed_unassigned_issue) { create(:closed_issue, author: author) } |
12 | 12 | ||
13 | 13 | ||
14 | - before(:each) { subject.stub(:current_user).and_return(some_user) } | 14 | + before { subject.stub(:current_user).and_return(some_user) } |
15 | + before { subject.stub(notification: mock('NotificationService').as_null_object) } | ||
16 | + | ||
15 | 17 | ||
16 | subject { IssueObserver.instance } | 18 | subject { IssueObserver.instance } |
17 | 19 | ||
@@ -25,15 +27,8 @@ describe IssueObserver do | @@ -25,15 +27,8 @@ describe IssueObserver do | ||
25 | end | 27 | end |
26 | end | 28 | end |
27 | 29 | ||
28 | - it 'sends an email to the assignee' do | ||
29 | - Notify.should_receive(:new_issue_email).with(mock_issue.id) | ||
30 | - | ||
31 | - subject.after_create(mock_issue) | ||
32 | - end | ||
33 | - | ||
34 | - it 'does not send an email to the assignee if assignee created the issue' do | ||
35 | - subject.stub(:current_user).and_return(assignee) | ||
36 | - Notify.should_not_receive(:new_issue_email) | 30 | + it 'trigger notification to send emails' do |
31 | + subject.should_receive(:notification) | ||
37 | 32 | ||
38 | subject.after_create(mock_issue) | 33 | subject.after_create(mock_issue) |
39 | end | 34 | end |
@@ -47,16 +42,14 @@ describe IssueObserver do | @@ -47,16 +42,14 @@ describe IssueObserver do | ||
47 | assigned_issue.close | 42 | assigned_issue.close |
48 | end | 43 | end |
49 | 44 | ||
50 | - it 'notification is delivered if the issue being closed' do | ||
51 | - Notify.should_receive(:issue_status_changed_email).twice | 45 | + it 'trigger notification to send emails' do |
46 | + subject.should_receive(:notification) | ||
52 | 47 | ||
53 | assigned_issue.close | 48 | assigned_issue.close |
54 | end | 49 | end |
55 | 50 | ||
56 | - it 'notification is delivered only to author if the issue being closed' do | ||
57 | - Notify.should_receive(:issue_status_changed_email).once | 51 | + it 'creates a note' do |
58 | Note.should_receive(:create_status_change_note).with(unassigned_issue, some_user, 'closed') | 52 | Note.should_receive(:create_status_change_note).with(unassigned_issue, some_user, 'closed') |
59 | - | ||
60 | unassigned_issue.close | 53 | unassigned_issue.close |
61 | end | 54 | end |
62 | end | 55 | end |
@@ -68,14 +61,13 @@ describe IssueObserver do | @@ -68,14 +61,13 @@ describe IssueObserver do | ||
68 | closed_assigned_issue.reopen | 61 | closed_assigned_issue.reopen |
69 | end | 62 | end |
70 | 63 | ||
71 | - it 'notification is delivered if the issue being reopened' do | ||
72 | - Notify.should_receive(:issue_status_changed_email).twice | 64 | + it 'trigger notification to send emails' do |
65 | + subject.should_receive(:notification) | ||
73 | 66 | ||
74 | closed_assigned_issue.reopen | 67 | closed_assigned_issue.reopen |
75 | end | 68 | end |
76 | 69 | ||
77 | - it 'notification is delivered only to author if the issue being reopened' do | ||
78 | - Notify.should_receive(:issue_status_changed_email).once | 70 | + it 'create a note' do |
79 | Note.should_receive(:create_status_change_note).with(closed_unassigned_issue, some_user, 'reopened') | 71 | Note.should_receive(:create_status_change_note).with(closed_unassigned_issue, some_user, 'reopened') |
80 | 72 | ||
81 | closed_unassigned_issue.reopen | 73 | closed_unassigned_issue.reopen |
@@ -98,61 +90,20 @@ describe IssueObserver do | @@ -98,61 +90,20 @@ describe IssueObserver do | ||
98 | end | 90 | end |
99 | end | 91 | end |
100 | 92 | ||
101 | - context 'a reassigned email' do | ||
102 | - it 'is sent if the issue is being reassigned' do | 93 | + context 'notification' do |
94 | + it 'triggered if the issue is being reassigned' do | ||
103 | mock_issue.should_receive(:is_being_reassigned?).and_return(true) | 95 | mock_issue.should_receive(:is_being_reassigned?).and_return(true) |
104 | - subject.should_receive(:send_reassigned_email).with(mock_issue) | 96 | + subject.should_receive(:notification) |
105 | 97 | ||
106 | subject.after_update(mock_issue) | 98 | subject.after_update(mock_issue) |
107 | end | 99 | end |
108 | 100 | ||
109 | - it 'is not sent if the issue is not being reassigned' do | 101 | + it 'is not triggered if the issue is not being reassigned' do |
110 | mock_issue.should_receive(:is_being_reassigned?).and_return(false) | 102 | mock_issue.should_receive(:is_being_reassigned?).and_return(false) |
111 | - subject.should_not_receive(:send_reassigned_email) | 103 | + subject.should_not_receive(:notification) |
112 | 104 | ||
113 | subject.after_update(mock_issue) | 105 | subject.after_update(mock_issue) |
114 | end | 106 | end |
115 | end | 107 | end |
116 | end | 108 | end |
117 | - | ||
118 | - describe '#send_reassigned_email' do | ||
119 | - let(:previous_assignee) { double(:user, id: 3) } | ||
120 | - | ||
121 | - before(:each) do | ||
122 | - mock_issue.stub(:assignee_id).and_return(assignee.id) | ||
123 | - mock_issue.stub(:assignee_id_was).and_return(previous_assignee.id) | ||
124 | - end | ||
125 | - | ||
126 | - def it_sends_a_reassigned_email_to(recipient) | ||
127 | - Notify.should_receive(:reassigned_issue_email).with(recipient, mock_issue.id, previous_assignee.id) | ||
128 | - end | ||
129 | - | ||
130 | - def it_does_not_send_a_reassigned_email_to(recipient) | ||
131 | - Notify.should_not_receive(:reassigned_issue_email).with(recipient, mock_issue.id, previous_assignee.id) | ||
132 | - end | ||
133 | - | ||
134 | - it 'sends a reassigned email to the previous and current assignees' do | ||
135 | - it_sends_a_reassigned_email_to assignee.id | ||
136 | - it_sends_a_reassigned_email_to previous_assignee.id | ||
137 | - | ||
138 | - subject.send(:send_reassigned_email, mock_issue) | ||
139 | - end | ||
140 | - | ||
141 | - context 'does not send an email to the user who made the reassignment' do | ||
142 | - it 'if the user is the assignee' do | ||
143 | - subject.stub(:current_user).and_return(assignee) | ||
144 | - it_sends_a_reassigned_email_to previous_assignee.id | ||
145 | - it_does_not_send_a_reassigned_email_to assignee.id | ||
146 | - | ||
147 | - subject.send(:send_reassigned_email, mock_issue) | ||
148 | - end | ||
149 | - it 'if the user is the previous assignee' do | ||
150 | - subject.stub(:current_user).and_return(previous_assignee) | ||
151 | - it_sends_a_reassigned_email_to assignee.id | ||
152 | - it_does_not_send_a_reassigned_email_to previous_assignee.id | ||
153 | - | ||
154 | - subject.send(:send_reassigned_email, mock_issue) | ||
155 | - end | ||
156 | - end | ||
157 | - end | ||
158 | end | 109 | end |
spec/services/notification_service_spec.rb