diff options
author | Robb Kidd <robb@thekidds.org> | 2012-05-20 15:06:13 -0400 |
---|---|---|
committer | Robb Kidd <robb@thekidds.org> | 2012-06-20 14:09:46 -0400 |
commit | 356430c3c0e8aed3f8c9f2e181aaeaeaa4f1d693 (patch) | |
tree | 030a2a378eaeb43689eb615753d30257fc4e48f4 /spec | |
parent | 02924de3e1555bcd89097353ffb7eb552113b42e (diff) | |
download | gitlab-ce-356430c3c0e8aed3f8c9f2e181aaeaeaa4f1d693.tar.gz |
Add method for an issue to know whether it is being closed
Update IssueObserver to create a Note on the issue its being closed.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/issue_observer_spec.rb | 39 | ||||
-rw-r--r-- | spec/models/issue_spec.rb | 19 |
2 files changed, 50 insertions, 8 deletions
diff --git a/spec/models/issue_observer_spec.rb b/spec/models/issue_observer_spec.rb index 7de9a0ae628..fec09488d89 100644 --- a/spec/models/issue_observer_spec.rb +++ b/spec/models/issue_observer_spec.rb @@ -26,18 +26,41 @@ describe IssueObserver do end context 'when an issue is changed' do - it 'sends a reassigned email, if the issue is being reassigned' do - issue.should_receive(:is_being_reassigned?).and_return(true) - subject.should_receive(:send_reassigned_email).with(issue) + before(:each) do + issue.stub(:is_being_reassigned?).and_return(false) + issue.stub(:is_being_closed?).and_return(false) + end + + context 'a reassigned email' do + it 'is sent if the issue is being reassigned' do + issue.should_receive(:is_being_reassigned?).and_return(true) + subject.should_receive(:send_reassigned_email).with(issue) + + subject.after_change(issue) + end + + it 'is not sent if the issue is not being reassigned' do + issue.should_receive(:is_being_reassigned?).and_return(false) + subject.should_not_receive(:send_reassigned_email) - subject.after_change(issue) + subject.after_change(issue) + end end - it 'does not send a reassigned email, if the issue was not reassigned' do - issue.should_receive(:is_being_reassigned?).and_return(false) - subject.should_not_receive(:send_reassigned_email) + context 'a status "closed" note' do + it 'is created if the issue is being closed' do + issue.should_receive(:is_being_closed?).and_return(true) + Note.should_receive(:create_status_change_note).with(issue, some_user, 'closed') + + subject.after_change(issue) + end - subject.after_change(issue) + it 'is not created if the issue is not being closed' do + issue.should_receive(:is_being_closed?).and_return(false) + Note.should_not_receive(:create_status_change_note).with(issue, some_user, 'closed') + + subject.after_change(issue) + end end end diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 68c05f2edf4..9668f0b23f2 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -36,6 +36,25 @@ describe Issue do end end + describe '#is_being_closed?' do + it 'returns true if the closed attribute has changed and is now true' do + subject.closed = true + subject.is_being_closed?.should be_true + end + it 'returns false if the closed attribute has changed and is now false' do + issue = Factory.create(:issue, + :closed => true, + :author => Factory(:user), + :assignee => Factory(:user), + :project => Factory.create(:project)) + issue.closed = false + issue.is_being_closed?.should be_false + end + it 'returns false if the closed attribute has not changed' do + subject.is_being_closed?.should be_false + end + end + describe "plus 1" do let(:project) { Factory(:project) } subject { |