summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/factories.rb13
-rw-r--r--spec/models/merge_request_spec.rb4
-rw-r--r--spec/models/milestone_spec.rb2
-rw-r--r--spec/models/project_spec.rb8
-rw-r--r--spec/observers/merge_request_observer_spec.rb119
5 files changed, 53 insertions, 93 deletions
diff --git a/spec/factories.rb b/spec/factories.rb
index d2e9f48c47b..92d250d6d60 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -67,10 +67,6 @@ FactoryGirl.define do
source_branch "master"
target_branch "stable"
- trait :closed do
- closed true
- end
-
# pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
trait :with_diffs do
target_branch "master" # pretend bcf03b5d~3
@@ -85,7 +81,16 @@ FactoryGirl.define do
end
end
+ trait :closed do
+ state :closed
+ end
+
+ trait :reopened do
+ state :reopened
+ end
+
factory :closed_merge_request, traits: [:closed]
+ factory :reopened_merge_request, traits: [:reopened]
factory :merge_request_with_diffs, traits: [:with_diffs]
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index a7799f68604..e61bf44ce53 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -37,6 +37,10 @@ describe MergeRequest do
end
describe "#mr_and_commit_notes" do
+
+ end
+
+ describe "#mr_and_commit_notes" do
let!(:merge_request) { create(:merge_request) }
before do
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index 2ea2c56a6f7..8871bf4a156 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -7,7 +7,7 @@
# project_id :integer not null
# description :text
# due_date :date
-# closed :boolean default(FALSE), not null
+# state :string default(FALSE), not null
# created_at :datetime not null
# updated_at :datetime not null
#
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 4b620a2fa3e..5c27f363401 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -121,10 +121,7 @@ describe Project do
let(:project) { create(:project) }
before do
- @merge_request = create(:merge_request,
- project: project,
- merged: false,
- closed: false)
+ @merge_request = create(:merge_request, project: project)
@key = create(:key, user_id: project.owner.id)
end
@@ -133,8 +130,7 @@ describe Project do
@merge_request.last_commit.id.should == "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a", "refs/heads/stable", @key.user)
@merge_request.reload
- @merge_request.merged.should be_true
- @merge_request.closed.should be_true
+ @merge_request.merged?.should be_true
end
it "should update merge request commits with new one if pushed to source branch" do
diff --git a/spec/observers/merge_request_observer_spec.rb b/spec/observers/merge_request_observer_spec.rb
index 4841bf88fc5..9d702107a89 100644
--- a/spec/observers/merge_request_observer_spec.rb
+++ b/spec/observers/merge_request_observer_spec.rb
@@ -1,10 +1,14 @@
require 'spec_helper'
describe MergeRequestObserver do
- let(:some_user) { double(:user, id: 1) }
- let(:assignee) { double(:user, id: 2) }
- let(:author) { double(:user, id: 3) }
- let(:mr) { double(:merge_request, id: 42, assignee: assignee, author: author) }
+ let(:some_user) { create :user }
+ let(:assignee) { create :user }
+ let(:author) { create :user }
+ let(:mr_mock) { double(:merge_request, id: 42, assignee: assignee, author: author) }
+ let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author) }
+ let(:unassigned_mr) { create(:merge_request, author: author) }
+ let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author) }
+ let(:closed_unassigned_mr) { create(:closed_merge_request, author: author) }
before(:each) { subject.stub(:current_user).and_return(some_user) }
@@ -21,23 +25,21 @@ describe MergeRequestObserver do
end
it 'sends an email to the assignee' do
- Notify.should_receive(:new_merge_request_email).with(mr.id)
- subject.after_create(mr)
+ Notify.should_receive(:new_merge_request_email).with(mr_mock.id)
+ subject.after_create(mr_mock)
end
it 'does not send an email to the assignee if assignee created the merge request' do
subject.stub(:current_user).and_return(assignee)
Notify.should_not_receive(:new_merge_request_email)
- subject.after_create(mr)
+ subject.after_create(mr_mock)
end
end
context '#after_update' do
before(:each) do
- mr.stub(:is_being_reassigned?).and_return(false)
- mr.stub(:is_being_closed?).and_return(false)
- mr.stub(:is_being_reopened?).and_return(false)
+ mr_mock.stub(:is_being_reassigned?).and_return(false)
end
it 'is called when a merge request is changed' do
@@ -52,97 +54,50 @@ describe MergeRequestObserver do
context 'a reassigned email' do
it 'is sent if the merge request is being reassigned' do
- mr.should_receive(:is_being_reassigned?).and_return(true)
- subject.should_receive(:send_reassigned_email).with(mr)
+ mr_mock.should_receive(:is_being_reassigned?).and_return(true)
+ subject.should_receive(:send_reassigned_email).with(mr_mock)
- subject.after_update(mr)
+ subject.after_update(mr_mock)
end
it 'is not sent if the merge request is not being reassigned' do
- mr.should_receive(:is_being_reassigned?).and_return(false)
+ mr_mock.should_receive(:is_being_reassigned?).and_return(false)
subject.should_not_receive(:send_reassigned_email)
- subject.after_update(mr)
+ subject.after_update(mr_mock)
end
end
+ end
+
+ context '#after_close' do
context 'a status "closed"' do
it 'note is created if the merge request is being closed' do
- mr.should_receive(:is_being_closed?).and_return(true)
- Note.should_receive(:create_status_change_note).with(mr, some_user, 'closed')
-
- subject.after_update(mr)
- end
-
- it 'note is not created if the merge request is not being closed' do
- mr.should_receive(:is_being_closed?).and_return(false)
- Note.should_not_receive(:create_status_change_note).with(mr, some_user, 'closed')
-
- subject.after_update(mr)
- end
-
- it 'notification is delivered if the merge request being closed' do
- mr.stub(:is_being_closed?).and_return(true)
- Note.should_receive(:create_status_change_note).with(mr, some_user, 'closed')
-
- subject.after_update(mr)
- end
-
- it 'notification is not delivered if the merge request not being closed' do
- mr.stub(:is_being_closed?).and_return(false)
- Note.should_not_receive(:create_status_change_note).with(mr, some_user, 'closed')
+ Note.should_receive(:create_status_change_note).with(assigned_mr, some_user, 'closed')
- subject.after_update(mr)
+ assigned_mr.close
end
it 'notification is delivered only to author if the merge request is being closed' do
- mr_without_assignee = double(:merge_request, id: 42, author: author, assignee: nil)
- mr_without_assignee.stub(:is_being_reassigned?).and_return(false)
- mr_without_assignee.stub(:is_being_closed?).and_return(true)
- mr_without_assignee.stub(:is_being_reopened?).and_return(false)
- Note.should_receive(:create_status_change_note).with(mr_without_assignee, some_user, 'closed')
+ Note.should_receive(:create_status_change_note).with(unassigned_mr, some_user, 'closed')
- subject.after_update(mr_without_assignee)
+ unassigned_mr.close
end
end
+ end
+ context '#after_reopen' do
context 'a status "reopened"' do
it 'note is created if the merge request is being reopened' do
- mr.should_receive(:is_being_reopened?).and_return(true)
- Note.should_receive(:create_status_change_note).with(mr, some_user, 'reopened')
-
- subject.after_update(mr)
- end
-
- it 'note is not created if the merge request is not being reopened' do
- mr.should_receive(:is_being_reopened?).and_return(false)
- Note.should_not_receive(:create_status_change_note).with(mr, some_user, 'reopened')
-
- subject.after_update(mr)
- end
-
- it 'notification is delivered if the merge request being reopened' do
- mr.stub(:is_being_reopened?).and_return(true)
- Note.should_receive(:create_status_change_note).with(mr, some_user, 'reopened')
-
- subject.after_update(mr)
- end
-
- it 'notification is not delivered if the merge request is not being reopened' do
- mr.stub(:is_being_reopened?).and_return(false)
- Note.should_not_receive(:create_status_change_note).with(mr, some_user, 'reopened')
+ Note.should_receive(:create_status_change_note).with(closed_assigned_mr, some_user, 'reopened')
- subject.after_update(mr)
+ closed_assigned_mr.reopen
end
it 'notification is delivered only to author if the merge request is being reopened' do
- mr_without_assignee = double(:merge_request, id: 42, author: author, assignee: nil)
- mr_without_assignee.stub(:is_being_reassigned?).and_return(false)
- mr_without_assignee.stub(:is_being_closed?).and_return(false)
- mr_without_assignee.stub(:is_being_reopened?).and_return(true)
- Note.should_receive(:create_status_change_note).with(mr_without_assignee, some_user, 'reopened')
+ Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, some_user, 'reopened')
- subject.after_update(mr_without_assignee)
+ closed_unassigned_mr.reopen
end
end
end
@@ -151,23 +106,23 @@ describe MergeRequestObserver do
let(:previous_assignee) { double(:user, id: 3) }
before(:each) do
- mr.stub(:assignee_id).and_return(assignee.id)
- mr.stub(:assignee_id_was).and_return(previous_assignee.id)
+ mr_mock.stub(:assignee_id).and_return(assignee.id)
+ mr_mock.stub(:assignee_id_was).and_return(previous_assignee.id)
end
def it_sends_a_reassigned_email_to(recipient)
- Notify.should_receive(:reassigned_merge_request_email).with(recipient, mr.id, previous_assignee.id)
+ Notify.should_receive(:reassigned_merge_request_email).with(recipient, mr_mock.id, previous_assignee.id)
end
def it_does_not_send_a_reassigned_email_to(recipient)
- Notify.should_not_receive(:reassigned_merge_request_email).with(recipient, mr.id, previous_assignee.id)
+ Notify.should_not_receive(:reassigned_merge_request_email).with(recipient, mr_mock.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, mr)
+ subject.send(:send_reassigned_email, mr_mock)
end
context 'does not send an email to the user who made the reassignment' do
@@ -176,14 +131,14 @@ describe MergeRequestObserver do
it_sends_a_reassigned_email_to previous_assignee.id
it_does_not_send_a_reassigned_email_to assignee.id
- subject.send(:send_reassigned_email, mr)
+ subject.send(:send_reassigned_email, mr_mock)
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, mr)
+ subject.send(:send_reassigned_email, mr_mock)
end
end
end