refactor issue observer spec
This commit is contained in:
parent
e3e8b9fcb9
commit
c7bd99b040
|
@ -11,7 +11,9 @@ describe IssueObserver do
|
||||||
let(:closed_unassigned_issue) { create(:closed_issue, author: author) }
|
let(:closed_unassigned_issue) { create(:closed_issue, author: author) }
|
||||||
|
|
||||||
|
|
||||||
before(:each) { subject.stub(:current_user).and_return(some_user) }
|
before { subject.stub(:current_user).and_return(some_user) }
|
||||||
|
before { subject.stub(notification: mock('NotificationService').as_null_object) }
|
||||||
|
|
||||||
|
|
||||||
subject { IssueObserver.instance }
|
subject { IssueObserver.instance }
|
||||||
|
|
||||||
|
@ -25,15 +27,8 @@ describe IssueObserver do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sends an email to the assignee' do
|
it 'trigger notification to send emails' do
|
||||||
Notify.should_receive(:new_issue_email).with(mock_issue.id)
|
subject.should_receive(:notification)
|
||||||
|
|
||||||
subject.after_create(mock_issue)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'does not send an email to the assignee if assignee created the issue' do
|
|
||||||
subject.stub(:current_user).and_return(assignee)
|
|
||||||
Notify.should_not_receive(:new_issue_email)
|
|
||||||
|
|
||||||
subject.after_create(mock_issue)
|
subject.after_create(mock_issue)
|
||||||
end
|
end
|
||||||
|
@ -47,16 +42,14 @@ describe IssueObserver do
|
||||||
assigned_issue.close
|
assigned_issue.close
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'notification is delivered if the issue being closed' do
|
it 'trigger notification to send emails' do
|
||||||
Notify.should_receive(:issue_status_changed_email).twice
|
subject.should_receive(:notification)
|
||||||
|
|
||||||
assigned_issue.close
|
assigned_issue.close
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'notification is delivered only to author if the issue being closed' do
|
it 'creates a note' do
|
||||||
Notify.should_receive(:issue_status_changed_email).once
|
|
||||||
Note.should_receive(:create_status_change_note).with(unassigned_issue, some_user, 'closed')
|
Note.should_receive(:create_status_change_note).with(unassigned_issue, some_user, 'closed')
|
||||||
|
|
||||||
unassigned_issue.close
|
unassigned_issue.close
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -68,14 +61,13 @@ describe IssueObserver do
|
||||||
closed_assigned_issue.reopen
|
closed_assigned_issue.reopen
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'notification is delivered if the issue being reopened' do
|
it 'trigger notification to send emails' do
|
||||||
Notify.should_receive(:issue_status_changed_email).twice
|
subject.should_receive(:notification)
|
||||||
|
|
||||||
closed_assigned_issue.reopen
|
closed_assigned_issue.reopen
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'notification is delivered only to author if the issue being reopened' do
|
it 'create a note' do
|
||||||
Notify.should_receive(:issue_status_changed_email).once
|
|
||||||
Note.should_receive(:create_status_change_note).with(closed_unassigned_issue, some_user, 'reopened')
|
Note.should_receive(:create_status_change_note).with(closed_unassigned_issue, some_user, 'reopened')
|
||||||
|
|
||||||
closed_unassigned_issue.reopen
|
closed_unassigned_issue.reopen
|
||||||
|
@ -98,61 +90,20 @@ describe IssueObserver do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'a reassigned email' do
|
context 'notification' do
|
||||||
it 'is sent if the issue is being reassigned' do
|
it 'triggered if the issue is being reassigned' do
|
||||||
mock_issue.should_receive(:is_being_reassigned?).and_return(true)
|
mock_issue.should_receive(:is_being_reassigned?).and_return(true)
|
||||||
subject.should_receive(:send_reassigned_email).with(mock_issue)
|
subject.should_receive(:notification)
|
||||||
|
|
||||||
subject.after_update(mock_issue)
|
subject.after_update(mock_issue)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'is not sent if the issue is not being reassigned' do
|
it 'is not triggered if the issue is not being reassigned' do
|
||||||
mock_issue.should_receive(:is_being_reassigned?).and_return(false)
|
mock_issue.should_receive(:is_being_reassigned?).and_return(false)
|
||||||
subject.should_not_receive(:send_reassigned_email)
|
subject.should_not_receive(:notification)
|
||||||
|
|
||||||
subject.after_update(mock_issue)
|
subject.after_update(mock_issue)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#send_reassigned_email' do
|
|
||||||
let(:previous_assignee) { double(:user, id: 3) }
|
|
||||||
|
|
||||||
before(:each) do
|
|
||||||
mock_issue.stub(:assignee_id).and_return(assignee.id)
|
|
||||||
mock_issue.stub(:assignee_id_was).and_return(previous_assignee.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
def it_sends_a_reassigned_email_to(recipient)
|
|
||||||
Notify.should_receive(:reassigned_issue_email).with(recipient, mock_issue.id, previous_assignee.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
def it_does_not_send_a_reassigned_email_to(recipient)
|
|
||||||
Notify.should_not_receive(:reassigned_issue_email).with(recipient, mock_issue.id, previous_assignee.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sends a reassigned email to the previous and current assignees' do
|
|
||||||
it_sends_a_reassigned_email_to assignee.id
|
|
||||||
it_sends_a_reassigned_email_to previous_assignee.id
|
|
||||||
|
|
||||||
subject.send(:send_reassigned_email, mock_issue)
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'does not send an email to the user who made the reassignment' do
|
|
||||||
it 'if the user is the assignee' do
|
|
||||||
subject.stub(:current_user).and_return(assignee)
|
|
||||||
it_sends_a_reassigned_email_to previous_assignee.id
|
|
||||||
it_does_not_send_a_reassigned_email_to assignee.id
|
|
||||||
|
|
||||||
subject.send(:send_reassigned_email, mock_issue)
|
|
||||||
end
|
|
||||||
it 'if the user is the previous assignee' do
|
|
||||||
subject.stub(:current_user).and_return(previous_assignee)
|
|
||||||
it_sends_a_reassigned_email_to assignee.id
|
|
||||||
it_does_not_send_a_reassigned_email_to previous_assignee.id
|
|
||||||
|
|
||||||
subject.send(:send_reassigned_email, mock_issue)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -44,4 +44,3 @@ describe NotificationService do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue