toolshed 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +11 -0
  4. data/.toolshedrc.sample +32 -0
  5. data/README.md +159 -2
  6. data/Rakefile +3 -3
  7. data/bin/toolshed +6 -1
  8. data/lib/toolshed.rb +38 -28
  9. data/lib/toolshed/base.rb +33 -11
  10. data/lib/toolshed/cli.rb +30 -38
  11. data/lib/toolshed/client.rb +87 -293
  12. data/lib/toolshed/commands/base.rb +65 -23
  13. data/lib/toolshed/commands/checkout_branch.rb +15 -2
  14. data/lib/toolshed/commands/create_branch.rb +34 -29
  15. data/lib/toolshed/commands/create_pivotal_tracker_note.rb +9 -3
  16. data/lib/toolshed/commands/create_pull_request.rb +115 -68
  17. data/lib/toolshed/commands/create_ticket_comment.rb +17 -1
  18. data/lib/toolshed/commands/delete_branch.rb +34 -3
  19. data/lib/toolshed/commands/get_daily_time_update.rb +20 -3
  20. data/lib/toolshed/commands/list_branches.rb +16 -5
  21. data/lib/toolshed/commands/push_branch.rb +28 -9
  22. data/lib/toolshed/commands/rename_branch.rb +29 -0
  23. data/lib/toolshed/commands/ssh.rb +44 -3
  24. data/lib/toolshed/commands/ticket_information.rb +30 -4
  25. data/lib/toolshed/commands/update_pivotal_tracker_story_status.rb +9 -3
  26. data/lib/toolshed/commands/update_ticket_status.rb +8 -2
  27. data/lib/toolshed/entry_point.rb +89 -0
  28. data/lib/toolshed/git.rb +59 -0
  29. data/lib/toolshed/git/branch.rb +224 -0
  30. data/lib/toolshed/git/github.rb +45 -57
  31. data/lib/toolshed/git/validator.rb +14 -0
  32. data/lib/toolshed/logger.rb +46 -0
  33. data/lib/toolshed/password.rb +11 -6
  34. data/lib/toolshed/server_administration/ssh.rb +4 -2
  35. data/lib/toolshed/ticket_tracking/jira.rb +8 -6
  36. data/lib/toolshed/ticket_tracking/pivotal_tracker.rb +8 -6
  37. data/lib/toolshed/time_tracking/harvest.rb +8 -14
  38. data/lib/toolshed/version.rb +25 -1
  39. data/test/commands/checkout_branch_test.rb +11 -7
  40. data/test/commands/create_branch_test.rb +29 -24
  41. data/test/commands/create_pull_request_test.rb +39 -31
  42. data/test/commands/delete_branch_test.rb +35 -25
  43. data/test/commands/get_daily_time_update_test.rb +8 -8
  44. data/test/commands/push_branch_test.rb +27 -15
  45. data/test/commands/rename_branch_test.rb +59 -0
  46. data/test/git/git_helper.rb +5 -5
  47. data/test/git/git_test.rb +36 -31
  48. data/test/git/github_test.rb +9 -46
  49. data/test/helper.rb +11 -11
  50. data/test/server_administration/ssh_test.rb +1 -0
  51. data/test/ticket_tracking/jira_test.rb +18 -16
  52. data/test/time_tracking/harvest_test.rb +8 -6
  53. data/toolshed.gemspec +23 -20
  54. metadata +95 -46
  55. data/bin/toolshed.rb +0 -261
  56. data/lib/toolshed/git/git.rb +0 -119
@@ -1,3 +1,5 @@
1
+ require 'toolshed/password'
2
+
1
3
  require 'net/ssh'
2
4
 
3
5
  module Toolshed
@@ -81,8 +83,8 @@ module Toolshed
81
83
  end
82
84
 
83
85
  def set_ssh_options
84
- self.ssh_options.merge!({ keys: [self.keys] }) unless self.keys.blank?
85
- self.ssh_options.merge!({ password: self.password.read_user_input_password('password') }) if self.keys.blank?
86
+ self.ssh_options.merge!({ keys: [self.keys] }) unless keys.nil? || keys.empty?
87
+ self.ssh_options.merge!({ password: self.password.read_user_input_password('password') }) if keys.nil? || keys.empty?
86
88
  end
87
89
  end
88
90
  end
@@ -1,3 +1,5 @@
1
+ require 'jira'
2
+
1
3
  module Toolshed
2
4
  module TicketTracking
3
5
  class Jira < Base
@@ -8,11 +10,11 @@ module Toolshed
8
10
  attr_accessor :project, :client, :owner, :ticket, :default_pull_request_title_format
9
11
 
10
12
  def initialize(options={})
11
- username = (options[:username].nil?) ? Toolshed::Client::ticket_tracker_username : options[:username]
12
- password = (options[:password].nil?) ? Toolshed::Client::ticket_tracker_password : options[:password]
13
+ username = (options[:username].nil?) ? Toolshed::Client.instance.ticket_tracker_username : options[:username]
14
+ password = (options[:password].nil?) ? Toolshed::Client.instance.ticket_tracker_password : options[:password]
13
15
 
14
- self.owner = Toolshed::Client.ticket_tracker_owner
15
- self.default_pull_request_title_format = Toolshed::Client.default_pull_request_title_format ||= "[summary]"
16
+ self.owner = Toolshed::Client.instance.ticket_tracker_owner
17
+ self.default_pull_request_title_format = Toolshed::Client.instance.default_pull_request_title_format ||= "[summary]"
16
18
 
17
19
  self.client = JIRA::Client.new({
18
20
  username: username,
@@ -71,7 +73,7 @@ module Toolshed
71
73
 
72
74
  class << self
73
75
  def username
74
- return Toolshed::Client::ticket_tracker_username unless Toolshed::Client::ticket_tracker_username.nil?
76
+ return Toolshed::Client.instance.ticket_tracker_username unless Toolshed::Client.instance.ticket_tracker_username.nil?
75
77
 
76
78
  # prompt to ask for username
77
79
  puts "Jira username? "
@@ -79,7 +81,7 @@ module Toolshed
79
81
  end
80
82
 
81
83
  def password
82
- return Toolshed::Client::ticket_tracker_password unless Toolshed::Client::ticket_tracker_password.nil?
84
+ return Toolshed::Client.instance.ticket_tracker_password unless Toolshed::Client.instance.ticket_tracker_password.nil?
83
85
 
84
86
  # prompt to ask for password
85
87
  system "stty -echo"
@@ -1,3 +1,5 @@
1
+ require 'pivotal-tracker'
2
+
1
3
  module Toolshed
2
4
  module TicketTracking
3
5
  class PivotalTracker < Base
@@ -9,9 +11,9 @@ module Toolshed
9
11
  attr_accessor :project_id, :token, :story, :default_pull_request_title_format
10
12
 
11
13
  def initialize(options={})
12
- username = Toolshed::Client::pivotal_tracker_username
13
- password = Toolshed::Client::pivotal_tracker_password
14
- self.default_pull_request_title_format = Toolshed::Client.default_pull_request_title_format ||= "[title]"
14
+ username = Toolshed::Client.instance.pivotal_tracker_username
15
+ password = Toolshed::Client.instance.pivotal_tracker_password
16
+ self.default_pull_request_title_format = Toolshed::Client.instance.default_pull_request_title_format ||= "[title]"
15
17
 
16
18
  unless (options[:username].nil?)
17
19
  username = options[:username]
@@ -23,7 +25,7 @@ module Toolshed
23
25
 
24
26
  self.token = ::PivotalTracker::Client.token(username, password)
25
27
 
26
- self.project_id = (options[:project_id].nil?) ? Toolshed::Client.default_pivotal_tracker_project_id : options[:project_id]
28
+ self.project_id = (options[:project_id].nil?) ? Toolshed::Client.instance.default_pivotal_tracker_project_id : options[:project_id]
27
29
  @pt_project = ::PivotalTracker::Project.find(self.project_id)
28
30
  self.story = @pt_project.stories.find(options[:ticket_id])
29
31
  end
@@ -74,7 +76,7 @@ module Toolshed
74
76
 
75
77
  class << self
76
78
  def username
77
- username = Toolshed::Client::pivotal_tracker_username
79
+ username = Toolshed::Client.instance.pivotal_tracker_username
78
80
  if (username.nil?)
79
81
  # prompt to ask for username
80
82
  puts "PivotalTracker username? "
@@ -85,7 +87,7 @@ module Toolshed
85
87
  end
86
88
 
87
89
  def password
88
- password = Toolshed::Client::pivotal_tracker_password
90
+ password = Toolshed::Client.instance.pivotal_tracker_password
89
91
  if (password.nil?)
90
92
  # prompt to ask for password
91
93
  system "stty -echo"
@@ -1,3 +1,5 @@
1
+ require 'harvested'
2
+
1
3
  module Toolshed
2
4
  module TimeTracking
3
5
  class Harvest
@@ -9,21 +11,13 @@ module Toolshed
9
11
  attr_accessor :harvest_client, :project_id, :line_break, :start_list_item, :end_list_item, :start_unorder_list, :end_unorder_list, :format
10
12
 
11
13
  def initialize(options={})
12
- username = Toolshed::Client::time_tracking_username
13
- password = Toolshed::Client::time_tracking_password
14
- owner = Toolshed::Client.time_tracking_owner
15
-
16
- unless (options[:username].nil?)
17
- username = options[:username]
18
- end
14
+ username = Toolshed::Client.instance.time_tracking_username
15
+ password = Toolshed::Client.instance.time_tracking_password
16
+ owner = Toolshed::Client.instance.time_tracking_owner
19
17
 
20
- unless (options[:password].nil?)
21
- password = options[:password]
22
- end
23
-
24
- unless (options[:sub_domain].nil?)
25
- owner = options[:sub_domain]
26
- end
18
+ username = options[:username] unless options[:username].nil?
19
+ password = options[:password] unless options[:password].nil?
20
+ owner = options[:sub_domain] unless options[:sub_domain].nil?
27
21
 
28
22
  self.harvest_client = ::Harvest.client(subdomain: owner, username: username, password: password)
29
23
  self.project_id = options[:project_id] unless !options.has_key?(:project_id)
@@ -1,3 +1,27 @@
1
+ # encoding: UTF-8
2
+
3
+ # Module for toolshed
1
4
  module Toolshed
2
- VERSION = "1.0.2"
5
+ VERSION = '1.0.3'
6
+
7
+ # Display the version information with the toolshed banner
8
+ class Version
9
+ def self.banner
10
+ formatted_version = format('%80s', "Version: #{Toolshed::VERSION}")
11
+ formatted_authors_string = format('%80s', 'Authors: Jake Waller')
12
+ puts <<-EOS
13
+ ______ ___ ___ _ _____ __ __ ___ ___
14
+ | | / \ / \ | | / ___/| | | / _]| \
15
+ | || || || | ( \_ | | | / [_ | \
16
+ |_| |_|| O || O || |___ \__ || _ || _]| D |
17
+ | | | || || | / \ || | || [_ | |
18
+ | | | || || | \ || | || || |
19
+ |__| \___/ \___/ |_____| \___||__|__||_____||_____|
20
+
21
+ #{formatted_version}
22
+ #{formatted_authors_string}
23
+ EOS
24
+ exit
25
+ end
26
+ end
3
27
  end
@@ -2,19 +2,23 @@ require 'commands/commands_helper'
2
2
  require 'toolshed/commands/checkout_branch'
3
3
 
4
4
  class CheckoutBranchTest < Test::Unit::TestCase
5
+ def setup
6
+ @branch = Toolshed::Git::Branch.new
7
+ Toolshed.expects(:die).at_least(0).returns('die')
8
+ end
9
+
5
10
  def test_checkout_branch
6
- current_branch = Toolshed::Git::Base.branch_name
11
+ current_branch = @branch.name
7
12
 
8
13
  new_branch_name = random_branch_name
9
14
  create_and_checkout_branch(new_branch_name)
10
15
 
11
- output = capture_stdout { Toolshed::Commands::CheckoutBranch.new.execute({}, { branch_name: current_branch }) }
12
-
13
- assert_match /Switched to 'master'/, output
16
+ results = Toolshed::Commands::CheckoutBranch.new.execute({}, { branch_name: current_branch })
17
+ assert_equal 'die', results
14
18
  end
15
19
 
16
20
  def test_checkout_branch_prompt
17
- current_branch = Toolshed::Git::Base.branch_name
21
+ current_branch = @branch.name
18
22
 
19
23
  new_branch_name = random_branch_name
20
24
  create_and_checkout_branch(new_branch_name)
@@ -22,7 +26,7 @@ class CheckoutBranchTest < Test::Unit::TestCase
22
26
  # stub the possible input
23
27
  Toolshed::Commands::CheckoutBranch.any_instance.stubs(:read_user_input).returns(current_branch)
24
28
 
25
- output = capture_stdout { Toolshed::Commands::CheckoutBranch.new.execute({}) }
26
- assert_match /Switched to 'master'/, output
29
+ results = Toolshed::Commands::CheckoutBranch.new.execute({})
30
+ assert_equal 'die', results
27
31
  end
28
32
  end
@@ -2,63 +2,68 @@ require 'commands/commands_helper'
2
2
  require 'toolshed/commands/create_branch'
3
3
 
4
4
  class CreateBranchTest < Test::Unit::TestCase
5
+ def setup
6
+ @branch = Toolshed::Git::Branch.new
7
+ Toolshed.expects(:die).at_least(0).returns('die')
8
+ end
9
+
5
10
  def test_create_new_branch_passing_in_branch_name_branch_from
6
- Toolshed::Client.pull_from_remote_name = 'origin'
7
- Toolshed::Client.push_to_remote_name = 'origin'
11
+ Toolshed::Client.instance.pull_from_remote_name = 'origin'
12
+ Toolshed::Client.instance.push_to_remote_name = 'origin'
8
13
 
9
- current_branch = Toolshed::Git::Base.branch_name
14
+ current_branch = @branch.name
10
15
  new_branch_name = ::Faker::Lorem.word.downcase
11
16
 
12
- output = capture_stdout { Toolshed::Commands::CreateBranch.new.execute({}, { branch_name: new_branch_name, branch_from: 'development' }) }
17
+ output = Toolshed::Commands::CreateBranch.new.execute({}, { branch_name: new_branch_name, branch_from: 'development' })
13
18
 
14
- assert_match /Branch #{new_branch_name} has been created/, output
19
+ assert_match 'die', output
15
20
 
16
- assert_equal new_branch_name, Toolshed::Git::Base.branch_name
17
- assert_equal 'development', Toolshed::Git::Base.branched_from
21
+ assert_equal new_branch_name, @branch.name
22
+ assert_equal 'development', Toolshed::Git::Branch.from
18
23
 
19
- Toolshed::Git::Base.checkout(current_branch)
24
+ Toolshed::Git::Branch.checkout(current_branch)
20
25
  delete_branch(new_branch_name)
21
26
  end
22
27
 
23
28
  def test_create_new_branch_not_passing_in_branch_name_or_branch_from
24
- Toolshed::Client.pull_from_remote_name = 'origin'
25
- Toolshed::Client.push_to_remote_name = 'origin'
29
+ Toolshed::Client.instance.pull_from_remote_name = 'origin'
30
+ Toolshed::Client.instance.push_to_remote_name = 'origin'
26
31
 
27
- current_branch = Toolshed::Git::Base.branch_name
32
+ current_branch = @branch.name
28
33
  new_branch_name = ::Faker::Lorem.word.downcase
29
34
 
30
35
  # stub the possible input
31
36
  Toolshed::Commands::CreateBranch.any_instance.stubs(:read_user_input_branch_name).returns(new_branch_name)
32
37
  Toolshed::Commands::CreateBranch.any_instance.stubs(:read_user_input_branch_from).returns('development')
33
38
 
34
- output = capture_stdout { Toolshed::Commands::CreateBranch.new.execute({}) }
39
+ output = Toolshed::Commands::CreateBranch.new.execute({})
35
40
 
36
- assert_match /Branch #{new_branch_name} has been created/, output
41
+ assert_match 'die', output
37
42
 
38
- assert_equal new_branch_name, Toolshed::Git::Base.branch_name
39
- assert_equal 'development', Toolshed::Git::Base.branched_from
43
+ assert_equal new_branch_name, @branch.name
44
+ assert_equal 'development', Toolshed::Git::Branch.from
40
45
 
41
- Toolshed::Git::Base.checkout(current_branch)
46
+ Toolshed::Git::Branch.checkout(current_branch)
42
47
  delete_branch(new_branch_name)
43
48
  end
44
49
 
45
50
  def test_create_new_branch_without_passing_in_branch_from
46
- Toolshed::Client.pull_from_remote_name = 'origin'
47
- Toolshed::Client.push_to_remote_name = 'origin'
51
+ Toolshed::Client.instance.pull_from_remote_name = 'origin'
52
+ Toolshed::Client.instance.push_to_remote_name = 'origin'
48
53
 
49
- current_branch = Toolshed::Git::Base.branch_name
54
+ current_branch = @branch.name
50
55
  new_branch_name = ::Faker::Lorem.word.downcase
51
56
 
52
57
  # stub the possible input
53
58
  Toolshed::Commands::CreateBranch.any_instance.stubs(:read_user_input_branch_name).returns(new_branch_name)
54
59
 
55
- output = capture_stdout { Toolshed::Commands::CreateBranch.new.execute({}, { branch_name: new_branch_name }) }
60
+ output = Toolshed::Commands::CreateBranch.new.execute({}, { branch_name: new_branch_name })
56
61
 
57
- assert_match /Branch #{new_branch_name} has been created/, output
58
- assert_equal new_branch_name, Toolshed::Git::Base.branch_name
59
- assert_equal 'master', Toolshed::Git::Base.branched_from
62
+ assert_match 'die', output
63
+ assert_equal new_branch_name, @branch.name
64
+ assert_equal 'master', Toolshed::Git::Branch.from
60
65
 
61
- Toolshed::Git::Base.checkout(current_branch)
66
+ Toolshed::Git::Branch.checkout(current_branch)
62
67
  delete_branch(new_branch_name)
63
68
  end
64
69
  end
@@ -1,15 +1,23 @@
1
1
  require 'commands/commands_helper'
2
2
  require 'toolshed/commands/create_pull_request'
3
+ require 'toolshed/git/github'
4
+ require 'toolshed/ticket_tracking/pivotal_tracker'
5
+ require 'toolshed/git/branch'
3
6
 
4
7
  class CreatePullRequestTest < Test::Unit::TestCase
8
+ def setup
9
+ @branch = Toolshed::Git::Branch.new
10
+ Toolshed.expects(:die).at_least(0).returns('Exiting')
11
+ end
12
+
5
13
  def test_create_github_pull_request_no_ticket_tracking
6
- Toolshed::Client.ticket_tracking_tool = ''
7
- Toolshed::Client.git_tool = 'github'
8
- Toolshed::Client.github_username = 'sample'
9
- Toolshed::Client.github_password = 'sample'
14
+ Toolshed::Client.instance.ticket_tracking_tool = ''
15
+ Toolshed::Client.instance.git_tool = 'github'
16
+ Toolshed::Client.instance.github_username = 'sample'
17
+ Toolshed::Client.instance.github_password = 'sample'
10
18
 
11
- Toolshed::Client.pull_from_repository_user = 'sample'
12
- Toolshed::Client.pull_from_repository_name = 'sample_repo'
19
+ Toolshed::Client.instance.pull_from_repository_user = 'sample'
20
+ Toolshed::Client.instance.pull_from_repository_name = 'sample_repo'
13
21
 
14
22
  # mock up the pull request
15
23
  expected_result = {
@@ -29,34 +37,34 @@ class CreatePullRequestTest < Test::Unit::TestCase
29
37
  body: {
30
38
  title: 'Sample',
31
39
  body: 'Sample Body',
32
- head: "#{Toolshed::Client.github_username}:#{Toolshed::Git::Base.branch_name}",
33
- base: Toolshed::Git::Base.branched_from
40
+ head: "#{Toolshed::Client.instance.github_username}:#{@branch.name}",
41
+ base: Toolshed::Git::Branch.from
34
42
  }.to_json
35
43
  })
36
44
 
37
45
  HTTParty.
38
46
  expects(:post).
39
- with("#{Toolshed::Client::GITHUB_BASE_API_URL}repos/#{Toolshed::Client.pull_from_repository_user}/#{Toolshed::Client.pull_from_repository_name}/pulls", github_default_options).
47
+ with("#{Toolshed::Client::GITHUB_BASE_API_URL}repos/#{Toolshed::Client.instance.pull_from_repository_user}/#{Toolshed::Client.instance.pull_from_repository_name}/pulls", github_default_options).
40
48
  returns(http_party_mock)
41
49
 
42
50
  # stub the possible input
43
51
  Toolshed::Commands::CreatePullRequest.any_instance.stubs(:read_user_input_add_note_to_ticket).returns(false)
44
52
 
45
- output = capture_stdout { Toolshed::Commands::CreatePullRequest.new.execute({}, { title: 'Sample', body: 'Sample Body' }) }
46
- assert_match /Created Pull Request: github.com\/pulls\/1/, output
53
+ result = Toolshed::Commands::CreatePullRequest.new.execute({}, { title: 'Sample', body: 'Sample Body' })
54
+ assert_equal 'github.com/pulls/1', result.pull_request_url
47
55
  end
48
56
 
49
57
  def test_create_github_pull_request_with_pivotal_tracker
50
- Toolshed::Client.ticket_tracking_tool = 'pivotal_tracker'
51
- Toolshed::Client.git_tool = 'github'
52
- Toolshed::Client.github_username = 'sample'
53
- Toolshed::Client.github_password = 'sample'
54
- Toolshed::Client.pivotal_tracker_username = 'ptusername'
55
- Toolshed::Client.pivotal_tracker_password = 'ptpassword'
56
- Toolshed::Client.default_pivotal_tracker_project_id = '1234'
57
- Toolshed::Client.pull_from_repository_user = 'sample'
58
- Toolshed::Client.pull_from_repository_name = 'sample_repo'
59
- Toolshed::Client.use_defaults = true
58
+ Toolshed::Client.instance.ticket_tracking_tool = 'pivotal_tracker'
59
+ Toolshed::Client.instance.git_tool = 'github'
60
+ Toolshed::Client.instance.github_username = 'sample'
61
+ Toolshed::Client.instance.github_password = 'sample'
62
+ Toolshed::Client.instance.pivotal_tracker_username = 'ptusername'
63
+ Toolshed::Client.instance.pivotal_tracker_password = 'ptpassword'
64
+ Toolshed::Client.instance.default_pivotal_tracker_project_id = '1234'
65
+ Toolshed::Client.instance.pull_from_repository_user = 'sample'
66
+ Toolshed::Client.instance.pull_from_repository_name = 'sample_repo'
67
+ Toolshed::Client.instance.use_defaults = true
60
68
 
61
69
  # mock up the pull request
62
70
  expected_result = {
@@ -76,14 +84,14 @@ class CreatePullRequestTest < Test::Unit::TestCase
76
84
  body: {
77
85
  title: 'Sample',
78
86
  body: 'Sample Body',
79
- head: "#{Toolshed::Client.github_username}:#{Toolshed::Git::Base.branch_name}",
80
- base: Toolshed::Git::Base.branched_from
87
+ head: "#{Toolshed::Client.instance.github_username}:#{@branch.name}",
88
+ base: Toolshed::Git::Branch.from
81
89
  }.to_json
82
90
  })
83
91
 
84
92
  HTTParty.
85
93
  expects(:post).
86
- with("#{Toolshed::Client::GITHUB_BASE_API_URL}repos/#{Toolshed::Client.pull_from_repository_user}/#{Toolshed::Client.pull_from_repository_name}/pulls", github_default_options).
94
+ with("#{Toolshed::Client::GITHUB_BASE_API_URL}repos/#{Toolshed::Client.instance.pull_from_repository_user}/#{Toolshed::Client.instance.pull_from_repository_name}/pulls", github_default_options).
87
95
  returns(http_party_mock)
88
96
 
89
97
  # mock up the pivotal_tracker stuff
@@ -96,7 +104,7 @@ class CreatePullRequestTest < Test::Unit::TestCase
96
104
  pivotal_tracker_mock.stubs(:id => '1')
97
105
 
98
106
  PivotalTracker::Project.expects(:find).
99
- with(Toolshed::Client.default_pivotal_tracker_project_id).
107
+ with(Toolshed::Client.instance.default_pivotal_tracker_project_id).
100
108
  returns(pivotal_tracker_mock)
101
109
 
102
110
  # mock up the story information
@@ -120,14 +128,14 @@ class CreatePullRequestTest < Test::Unit::TestCase
120
128
  Toolshed::Commands::CreatePullRequest.any_instance.stubs(:read_user_input_ticket_tracker_ticket_id).returns('1')
121
129
  Toolshed::Commands::CreatePullRequest.any_instance.stubs(:read_user_input_add_note_to_ticket).returns(false)
122
130
 
123
- output = capture_stdout { Toolshed::Commands::CreatePullRequest.new.execute({}, { title: 'Sample', body: 'Sample Body' }) }
124
- assert_match /Created Pull Request: github.com\/pulls\/1/, output
131
+ result = Toolshed::Commands::CreatePullRequest.new.execute({}, { title: 'Sample', body: 'Sample Body' })
132
+ assert_equal 'github.com/pulls/1', result.pull_request_url
125
133
  end
126
134
 
127
135
  def test_create_github_pull_request_with_invalid_ticket_tracker
128
- Toolshed::Client.ticket_tracking_tool = 'unfuddle'
129
- Toolshed::Client.git_tool = 'github'
130
- output = capture_stdout { Toolshed::Commands::CreatePullRequest.new.execute({}, { title: 'Sample', body: 'Sample Body' }) }
131
- assert_match /Ticket tracking tool is not supported at this time/, output
136
+ Toolshed::Client.instance.ticket_tracking_tool = 'unfuddle'
137
+ Toolshed::Client.instance.git_tool = 'github'
138
+ result = Toolshed::Commands::CreatePullRequest.new.execute({}, { title: 'Sample', body: 'Sample Body' })
139
+ assert_equal nil, result.pull_request_url
132
140
  end
133
141
  end
@@ -2,72 +2,82 @@ require 'commands/commands_helper'
2
2
  require 'toolshed/commands/delete_branch'
3
3
 
4
4
  class DeleteBranchTest < Test::Unit::TestCase
5
+ def setup
6
+ Toolshed.expects(:die).at_least(0).returns('Exiting')
7
+ @branch = Toolshed::Git::Branch.new
8
+ end
9
+
5
10
  def test_delete_branch_with_branch_name_passed
6
- current_branch = Toolshed::Git::Base.branch_name
11
+ current_branch = @branch.name
7
12
 
8
13
  new_branch_name = random_branch_name
9
14
  create_and_checkout_branch(new_branch_name, 'master')
10
15
 
11
16
  # go to the remote repo and verify it exists
12
17
  Dir.chdir(File.join(TEST_ROOT, "remote"))
13
- remote_current_branch = Toolshed::Git::Base.branch_name
14
- Toolshed::Git::Base.checkout(new_branch_name)
15
- assert_equal new_branch_name, Toolshed::Git::Base.branch_name
16
- Toolshed::Git::Base.checkout(remote_current_branch)
18
+ remote_current_branch = @branch.name
19
+ Toolshed::Git::Branch.checkout(new_branch_name)
20
+ assert_equal new_branch_name, @branch.name
21
+ Toolshed::Git::Branch.checkout(remote_current_branch)
17
22
 
18
23
  Dir.chdir(File.join(TEST_ROOT, "local"))
19
- Toolshed::Git::Base.checkout(current_branch)
24
+ Toolshed::Git::Branch.checkout(current_branch)
20
25
 
21
- output = capture_stdout { Toolshed::Commands::DeleteBranch.new.execute({}, { branch_name: new_branch_name }) }
22
- assert_match /#{new_branch_name} has been deleted/, output
26
+ delete_branch_command = Toolshed::Commands::DeleteBranch.new
27
+ delete_branch_command.expects(:confirm_delete).returns(true)
28
+ result = delete_branch_command.execute({}, { branch_name: new_branch_name })
29
+ assert_equal 'Exiting', result
23
30
 
24
31
  branch_found = `git branch | grep #{new_branch_name}`
25
32
  assert_equal '', branch_found
26
33
  end
27
34
 
28
35
  def test_delete_branch_with_ticket_id_only_passed
29
- current_branch = Toolshed::Git::Base.branch_name
36
+ current_branch = @branch.name
30
37
 
31
38
  new_branch_name = "1234333_#{random_branch_name}"
32
39
  create_and_checkout_branch(new_branch_name, 'master')
33
40
 
34
41
  # go to the remote repo and verify it exists
35
42
  Dir.chdir(File.join(TEST_ROOT, "remote"))
36
- remote_current_branch = Toolshed::Git::Base.branch_name
37
- Toolshed::Git::Base.checkout(new_branch_name)
38
- assert_equal new_branch_name, Toolshed::Git::Base.branch_name
39
- Toolshed::Git::Base.checkout(remote_current_branch)
43
+ remote_current_branch = @branch.name
44
+ Toolshed::Git::Branch.checkout(new_branch_name)
45
+ assert_equal new_branch_name, @branch.name
46
+ Toolshed::Git::Branch.checkout(remote_current_branch)
40
47
 
41
48
  Dir.chdir(File.join(TEST_ROOT, "local"))
42
- Toolshed::Git::Base.checkout(current_branch)
43
-
44
- output = capture_stdout { Toolshed::Commands::DeleteBranch.new.execute({}, { branch_name: '1234333' }) }
45
- assert_match /#{new_branch_name} has been deleted/, output
49
+ Toolshed::Git::Branch.checkout(current_branch)
50
+ delete_branch_command = Toolshed::Commands::DeleteBranch.new
51
+ delete_branch_command.expects(:confirm_delete).returns(true)
52
+ result = delete_branch_command.execute({}, { branch_name: '1234333' })
53
+ assert_equal 'Exiting', result
46
54
 
47
55
  branch_found = `git branch | grep #{new_branch_name}`
48
56
  assert_equal '', branch_found
49
57
  end
50
58
 
51
59
  def test_delete_branch_without_branch_name_passed
52
- current_branch = Toolshed::Git::Base.branch_name
60
+ current_branch = @branch.name
53
61
 
54
62
  new_branch_name = random_branch_name
55
63
  create_and_checkout_branch(new_branch_name, 'master')
56
64
 
57
65
  # go to the remote repo and verify it exists
58
66
  Dir.chdir(File.join(TEST_ROOT, "remote"))
59
- remote_current_branch = Toolshed::Git::Base.branch_name
60
- Toolshed::Git::Base.checkout(new_branch_name)
61
- assert_equal new_branch_name, Toolshed::Git::Base.branch_name
62
- Toolshed::Git::Base.checkout(remote_current_branch)
67
+ remote_current_branch = @branch.name
68
+ Toolshed::Git::Branch.checkout(new_branch_name)
69
+ assert_equal new_branch_name, @branch.name
70
+ Toolshed::Git::Branch.checkout(remote_current_branch)
63
71
 
64
72
  Dir.chdir(File.join(TEST_ROOT, "local"))
65
- Toolshed::Git::Base.checkout(current_branch)
73
+ Toolshed::Git::Branch.checkout(current_branch)
66
74
 
67
75
  Toolshed::Commands::DeleteBranch.any_instance.stubs(:read_user_input).returns(new_branch_name)
68
76
 
69
- output = capture_stdout { Toolshed::Commands::DeleteBranch.new.execute({}) }
70
- assert_match /#{new_branch_name} has been deleted/, output
77
+ delete_branch_command = Toolshed::Commands::DeleteBranch.new
78
+ delete_branch_command.expects(:confirm_delete).returns(true)
79
+ result = delete_branch_command.execute({})
80
+ assert_equal 'Exiting', result
71
81
 
72
82
  branch_found = `git branch | grep #{new_branch_name}`
73
83
  assert_equal '', branch_found