Added few tests on Issues::BulkUpdateContext
This commit is contained in:
parent
d08e1db930
commit
6e8cb84449
|
@ -8,11 +8,14 @@ module Issues
|
||||||
assignee_id = update_data[:assignee_id]
|
assignee_id = update_data[:assignee_id]
|
||||||
status = update_data[:status]
|
status = update_data[:status]
|
||||||
|
|
||||||
unless status.present?
|
new_state = nil
|
||||||
return {
|
|
||||||
count: 0,
|
if status.present?
|
||||||
success: false
|
if status == 'closed'
|
||||||
}
|
new_state = :close
|
||||||
|
else
|
||||||
|
new_state = :reopen
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
opts = {}
|
opts = {}
|
||||||
|
@ -22,12 +25,9 @@ module Issues
|
||||||
issues = Issue.where(id: issues_ids).all
|
issues = Issue.where(id: issues_ids).all
|
||||||
issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
|
issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
|
||||||
|
|
||||||
new_state = :reopen
|
|
||||||
new_state = :close if status == 'closed'
|
|
||||||
|
|
||||||
issues.each do |issue|
|
issues.each do |issue|
|
||||||
issue.update_attributes(opts)
|
issue.update_attributes(opts)
|
||||||
issue.send new_state
|
issue.send new_state if new_state
|
||||||
end
|
end
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,14 +2,21 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Issues::BulkUpdateContext do
|
describe Issues::BulkUpdateContext do
|
||||||
|
|
||||||
describe :close_issue do
|
let(:issue) {
|
||||||
|
create(:issue, project: @project)
|
||||||
|
}
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@user = create :user
|
@user = create :user
|
||||||
opts = {
|
opts = {
|
||||||
name: "GitLab"
|
name: "GitLab"
|
||||||
}
|
}
|
||||||
@project = create_project(@user, opts)
|
@project = Projects::CreateContext.new(@user, opts).execute
|
||||||
|
end
|
||||||
|
|
||||||
|
describe :close_issue do
|
||||||
|
|
||||||
|
before do
|
||||||
@issues = 5.times.collect do
|
@issues = 5.times.collect do
|
||||||
create(:issue, project: @project)
|
create(:issue, project: @project)
|
||||||
end
|
end
|
||||||
|
@ -19,31 +26,22 @@ describe Issues::BulkUpdateContext do
|
||||||
issues_ids: @issues.map(&:id)
|
issues_ids: @issues.map(&:id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "close issues" do
|
it {
|
||||||
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
|
|
||||||
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
|
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
|
||||||
result[:success].should be_true
|
result[:success].should be_true
|
||||||
result[:count].should == @issues.count
|
result[:count].should == @issues.count
|
||||||
end
|
|
||||||
|
@project.issues.opened.should be_empty
|
||||||
|
@project.issues.closed.should_not be_empty
|
||||||
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe :reopen_issues do
|
describe :reopen_issues do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@user = create :user
|
|
||||||
opts = {
|
|
||||||
name: "GitLab"
|
|
||||||
}
|
|
||||||
@project = create_project(@user, opts)
|
|
||||||
@issues = 5.times.collect do
|
@issues = 5.times.collect do
|
||||||
create(:closed_issue, project: @project)
|
create(:closed_issue, project: @project)
|
||||||
end
|
end
|
||||||
|
@ -53,25 +51,60 @@ describe Issues::BulkUpdateContext do
|
||||||
issues_ids: @issues.map(&:id)
|
issues_ids: @issues.map(&:id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reopen issues" do
|
it {
|
||||||
Issues::BulkUpdateContext.new(@project, @user, @params).execute
|
|
||||||
@project.issues.closed.should be_empty
|
|
||||||
@project.issues.opened.should_not be_empty
|
|
||||||
end
|
|
||||||
|
|
||||||
it "return success" do
|
|
||||||
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
|
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
|
||||||
result[:success].should be_true
|
result[:success].should be_true
|
||||||
result[:count].should == @issues.count
|
result[:count].should == @issues.count
|
||||||
end
|
|
||||||
|
@project.issues.closed.should be_empty
|
||||||
|
@project.issues.opened.should_not be_empty
|
||||||
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_project(user, opts)
|
describe :update_assignee do
|
||||||
Projects::CreateContext.new(user, opts).execute
|
|
||||||
end
|
before do
|
||||||
|
@new_assignee = create :user
|
||||||
|
@params = {
|
||||||
|
update: {
|
||||||
|
issues_ids: [issue.id],
|
||||||
|
assignee_id: @new_assignee.id
|
||||||
|
}
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it {
|
||||||
|
result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
|
||||||
|
result[:success].should be_true
|
||||||
|
result[:count].should == 1
|
||||||
|
|
||||||
|
@project.issues.first.assignee.should == @new_assignee
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in New Issue