summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexDenisov <1101.debian@gmail.com>2013-05-16 10:32:16 +0000
committerAlexDenisov <1101.debian@gmail.com>2013-05-16 10:32:27 +0000
commit6e8cb844499dfcc77bd92f3daf0f7890400ec072 (patch)
tree5fb1909e5da126030d23c0f0c37482aa657027c3
parentd08e1db93091418694130870406995f21502d478 (diff)
downloadgitlab-ce-6e8cb844499dfcc77bd92f3daf0f7890400ec072.tar.gz
Added few tests on Issues::BulkUpdateContext
-rw-r--r--app/contexts/issues/bulk_update_context.rb18
-rw-r--r--spec/contexts/issues/bulk_update_context_spec.rb89
2 files changed, 70 insertions, 37 deletions
diff --git a/app/contexts/issues/bulk_update_context.rb b/app/contexts/issues/bulk_update_context.rb
index 8fe84d0e47c..73a3c353523 100644
--- a/app/contexts/issues/bulk_update_context.rb
+++ b/app/contexts/issues/bulk_update_context.rb
@@ -8,11 +8,14 @@ module Issues
assignee_id = update_data[:assignee_id]
status = update_data[:status]
- unless status.present?
- return {
- count: 0,
- success: false
- }
+ new_state = nil
+
+ if status.present?
+ if status == 'closed'
+ new_state = :close
+ else
+ new_state = :reopen
+ end
end
opts = {}
@@ -22,12 +25,9 @@ module Issues
issues = Issue.where(id: issues_ids).all
issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
- new_state = :reopen
- new_state = :close if status == 'closed'
-
issues.each do |issue|
issue.update_attributes(opts)
- issue.send new_state
+ issue.send new_state if new_state
end
{
diff --git a/spec/contexts/issues/bulk_update_context_spec.rb b/spec/contexts/issues/bulk_update_context_spec.rb
index 0ea1799f5c9..0966ee35745 100644
--- a/spec/contexts/issues/bulk_update_context_spec.rb
+++ b/spec/contexts/issues/bulk_update_context_spec.rb
@@ -2,14 +2,21 @@ require 'spec_helper'
describe Issues::BulkUpdateContext do
+ let(:issue) {
+ create(:issue, project: @project)
+ }
+
+ before do
+ @user = create :user
+ opts = {
+ name: "GitLab"
+ }
+ @project = Projects::CreateContext.new(@user, opts).execute
+ end
+
describe :close_issue do
before do
- @user = create :user
- opts = {
- name: "GitLab"
- }
- @project = create_project(@user, opts)
@issues = 5.times.collect do
create(:issue, project: @project)
end
@@ -19,31 +26,22 @@ describe Issues::BulkUpdateContext do
issues_ids: @issues.map(&:id)
}
}
-
end
- it "close issues" do
- Issues::BulkUpdateContext.new(@project, @user, @params).execute
- @project.issues.opened.should be_empty
- @project.issues.closed.should_not be_empty
- end
-
- it "return success" do
+ it {
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
result[:success].should be_true
result[:count].should == @issues.count
- end
+
+ @project.issues.opened.should be_empty
+ @project.issues.closed.should_not be_empty
+ }
end
describe :reopen_issues do
before do
- @user = create :user
- opts = {
- name: "GitLab"
- }
- @project = create_project(@user, opts)
@issues = 5.times.collect do
create(:closed_issue, project: @project)
end
@@ -53,25 +51,60 @@ describe Issues::BulkUpdateContext do
issues_ids: @issues.map(&:id)
}
}
-
end
- it "reopen issues" do
- Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ it {
+ result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ result[:success].should be_true
+ result[:count].should == @issues.count
+
@project.issues.closed.should be_empty
@project.issues.opened.should_not be_empty
+ }
+
+ end
+
+ describe :update_assignee do
+
+ before do
+ @new_assignee = create :user
+ @params = {
+ update: {
+ issues_ids: [issue.id],
+ assignee_id: @new_assignee.id
+ }
+ }
end
- it "return success" do
+ it {
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
result[:success].should be_true
- result[:count].should == @issues.count
- end
+ result[:count].should == 1
+
+ @project.issues.first.assignee.should == @new_assignee
+ }
end
- def create_project(user, opts)
- Projects::CreateContext.new(user, opts).execute
+ describe :update_milestone do
+
+ before do
+ @milestone = create :milestone
+ @params = {
+ update: {
+ issues_ids: [issue.id],
+ milestone_id: @milestone.id
+ }
+ }
+ end
+
+ it {
+ result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
+ result[:success].should be_true
+ result[:count].should == 1
+
+ @project.issues.first.milestone.should == @milestone
+ }
end
-end
+end