Commit 6e8cb844499dfcc77bd92f3daf0f7890400ec072

Authored by AlexDenisov
1 parent d08e1db9

Added few tests on Issues::BulkUpdateContext

app/contexts/issues/bulk_update_context.rb
@@ -8,11 +8,14 @@ module Issues @@ -8,11 +8,14 @@ module Issues
8 assignee_id = update_data[:assignee_id] 8 assignee_id = update_data[:assignee_id]
9 status = update_data[:status] 9 status = update_data[:status]
10 10
11 - unless status.present?  
12 - return {  
13 - count: 0,  
14 - success: false  
15 - } 11 + new_state = nil
  12 +
  13 + if status.present?
  14 + if status == 'closed'
  15 + new_state = :close
  16 + else
  17 + new_state = :reopen
  18 + end
16 end 19 end
17 20
18 opts = {} 21 opts = {}
@@ -22,12 +25,9 @@ module Issues @@ -22,12 +25,9 @@ module Issues
22 issues = Issue.where(id: issues_ids).all 25 issues = Issue.where(id: issues_ids).all
23 issues = issues.select { |issue| can?(current_user, :modify_issue, issue) } 26 issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
24 27
25 - new_state = :reopen  
26 - new_state = :close if status == 'closed'  
27 -  
28 issues.each do |issue| 28 issues.each do |issue|
29 issue.update_attributes(opts) 29 issue.update_attributes(opts)
30 - issue.send new_state 30 + issue.send new_state if new_state
31 end 31 end
32 32
33 { 33 {
spec/contexts/issues/bulk_update_context_spec.rb
@@ -2,14 +2,21 @@ require 'spec_helper' @@ -2,14 +2,21 @@ require 'spec_helper'
2 2
3 describe Issues::BulkUpdateContext do 3 describe Issues::BulkUpdateContext do
4 4
  5 + let(:issue) {
  6 + create(:issue, project: @project)
  7 + }
  8 +
  9 + before do
  10 + @user = create :user
  11 + opts = {
  12 + name: "GitLab"
  13 + }
  14 + @project = Projects::CreateContext.new(@user, opts).execute
  15 + end
  16 +
5 describe :close_issue do 17 describe :close_issue do
6 18
7 before do 19 before do
8 - @user = create :user  
9 - opts = {  
10 - name: "GitLab"  
11 - }  
12 - @project = create_project(@user, opts)  
13 @issues = 5.times.collect do 20 @issues = 5.times.collect do
14 create(:issue, project: @project) 21 create(:issue, project: @project)
15 end 22 end
@@ -19,31 +26,22 @@ describe Issues::BulkUpdateContext do @@ -19,31 +26,22 @@ describe Issues::BulkUpdateContext do
19 issues_ids: @issues.map(&:id) 26 issues_ids: @issues.map(&:id)
20 } 27 }
21 } 28 }
22 -  
23 end 29 end
24 30
25 - it "close issues" do  
26 - Issues::BulkUpdateContext.new(@project, @user, @params).execute  
27 - @project.issues.opened.should be_empty  
28 - @project.issues.closed.should_not be_empty  
29 - end  
30 -  
31 - it "return success" do 31 + it {
32 result = Issues::BulkUpdateContext.new(@project, @user, @params).execute 32 result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
33 result[:success].should be_true 33 result[:success].should be_true
34 result[:count].should == @issues.count 34 result[:count].should == @issues.count
35 - end 35 +
  36 + @project.issues.opened.should be_empty
  37 + @project.issues.closed.should_not be_empty
  38 + }
36 39
37 end 40 end
38 41
39 describe :reopen_issues do 42 describe :reopen_issues do
40 43
41 before do 44 before do
42 - @user = create :user  
43 - opts = {  
44 - name: "GitLab"  
45 - }  
46 - @project = create_project(@user, opts)  
47 @issues = 5.times.collect do 45 @issues = 5.times.collect do
48 create(:closed_issue, project: @project) 46 create(:closed_issue, project: @project)
49 end 47 end
@@ -53,25 +51,60 @@ describe Issues::BulkUpdateContext do @@ -53,25 +51,60 @@ describe Issues::BulkUpdateContext do
53 issues_ids: @issues.map(&:id) 51 issues_ids: @issues.map(&:id)
54 } 52 }
55 } 53 }
56 -  
57 end 54 end
58 55
59 - it "reopen issues" do  
60 - Issues::BulkUpdateContext.new(@project, @user, @params).execute 56 + it {
  57 + result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
  58 + result[:success].should be_true
  59 + result[:count].should == @issues.count
  60 +
61 @project.issues.closed.should be_empty 61 @project.issues.closed.should be_empty
62 @project.issues.opened.should_not be_empty 62 @project.issues.opened.should_not be_empty
  63 + }
  64 +
  65 + end
  66 +
  67 + describe :update_assignee do
  68 +
  69 + before do
  70 + @new_assignee = create :user
  71 + @params = {
  72 + update: {
  73 + issues_ids: [issue.id],
  74 + assignee_id: @new_assignee.id
  75 + }
  76 + }
63 end 77 end
64 78
65 - it "return success" do 79 + it {
66 result = Issues::BulkUpdateContext.new(@project, @user, @params).execute 80 result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
67 result[:success].should be_true 81 result[:success].should be_true
68 - result[:count].should == @issues.count  
69 - end 82 + result[:count].should == 1
  83 +
  84 + @project.issues.first.assignee.should == @new_assignee
  85 + }
70 86
71 end 87 end
72 88
73 - def create_project(user, opts)  
74 - Projects::CreateContext.new(user, opts).execute 89 + describe :update_milestone do
  90 +
  91 + before do
  92 + @milestone = create :milestone
  93 + @params = {
  94 + update: {
  95 + issues_ids: [issue.id],
  96 + milestone_id: @milestone.id
  97 + }
  98 + }
  99 + end
  100 +
  101 + it {
  102 + result = Issues::BulkUpdateContext.new(@project, @user, @params).execute
  103 + result[:success].should be_true
  104 + result[:count].should == 1
  105 +
  106 + @project.issues.first.milestone.should == @milestone
  107 + }
75 end 108 end
76 -end  
77 109
  110 +end