summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorRobb Kidd <robb@thekidds.org>2012-05-20 15:06:13 -0400
committerRobb Kidd <robb@thekidds.org>2012-06-20 14:09:46 -0400
commit356430c3c0e8aed3f8c9f2e181aaeaeaa4f1d693 (patch)
tree030a2a378eaeb43689eb615753d30257fc4e48f4 /spec
parent02924de3e1555bcd89097353ffb7eb552113b42e (diff)
downloadgitlab-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.rb39
-rw-r--r--spec/models/issue_spec.rb19
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 {