git_helper 3.3.2 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '02607381872b87e3390ddfe00db3a66da5b72698943abfc7af1fb556b69bc5fd'
4
- data.tar.gz: 85ef4555a8f0be75248dc20895a62d3e7660276154c4cee638faceb7f0ff701a
3
+ metadata.gz: e7e2fb7b1199964740a0d73091815fb81469b492a3de04adc16aea30ba794e79
4
+ data.tar.gz: 80abd21099775a4829c1e72accb74f7f91ae6e9f5e536cfd0468879065de06ff
5
5
  SHA512:
6
- metadata.gz: 354f303f75c86aefa64b8af4378e0006aab40b322ad5fa5b3f18018e45625d5f0e2d57c5a2f6ff8eb5e38d60863f995ac55fdecfe995d922dfff0d5dc3db4a52
7
- data.tar.gz: 2a946bf13c0b36ebe71ca352623aeb6c509a3a3ee2c565ed1e433380713afacd08fddfd69626ca22a88225a65f0f7f5d093f5bf25b58c3cbc2121ebf70d9529b
6
+ metadata.gz: 5fdabeaa00c72c8f58e00bce3f054949ad1061dbbb132661d06caf788ca827b486d44c20d57213582c2eb7b9c8db28ac88636b5e4562366010c33cc6056c526c
7
+ data.tar.gz: '08eee4e6e95562f500c93df42f72a713b43ece4d39c96013d5313612f13bf33dc4b7dcd5ca6de243d3bba360af8d8bc183d6c5f2a8600d9692de2afa3bf7c675'
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git_helper (3.3.1)
4
+ git_helper (3.3.2)
5
5
  gitlab (~> 4.16)
6
6
  gli (~> 2.13)
7
- highline (~> 2.0)
7
+ highline_wrapper (~> 0.1.0)
8
8
  octokit (~> 4.18)
9
9
 
10
10
  GEM
@@ -28,7 +28,7 @@ GEM
28
28
  gitlab (4.17.0)
29
29
  httparty (~> 0.18)
30
30
  terminal-table (~> 1.5, >= 1.5.1)
31
- gli (2.19.2)
31
+ gli (2.20.0)
32
32
  guard (2.16.2)
33
33
  formatador (>= 0.2.4)
34
34
  listen (>= 2.7, < 4.0)
@@ -44,6 +44,8 @@ GEM
44
44
  guard-compat (~> 1.1)
45
45
  rspec (>= 2.99.0, < 4.0)
46
46
  highline (2.0.3)
47
+ highline_wrapper (0.1.0)
48
+ highline (~> 2.0)
47
49
  httparty (0.18.1)
48
50
  mime-types (~> 3.0)
49
51
  multi_xml (>= 0.5.2)
@@ -56,7 +58,7 @@ GEM
56
58
  method_source (1.0.0)
57
59
  mime-types (3.3.1)
58
60
  mime-types-data (~> 3.2015)
59
- mime-types-data (3.2020.1104)
61
+ mime-types-data (3.2021.0225)
60
62
  multi_xml (0.6.0)
61
63
  multipart-post (2.1.1)
62
64
  nenv (0.3.0)
@@ -123,9 +125,10 @@ DEPENDENCIES
123
125
  faker (~> 2.15)
124
126
  git_helper!
125
127
  guard-rspec (~> 4.3)
128
+ pry (~> 0.13)
126
129
  rake (~> 13.0)
127
130
  rspec (~> 3.9)
128
- rubocop
131
+ rubocop (~> 1.10)
129
132
 
130
133
  BUNDLED WITH
131
134
  2.2.9
data/lib/git_helper.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'yaml'
4
4
  require 'gitlab'
5
- require 'highline'
5
+ require 'highline_wrapper'
6
6
  require 'octokit'
7
7
 
8
8
  files = "#{File.expand_path(File.join(File.dirname(File.absolute_path(__FILE__)), 'git_helper'))}/**/*.rb"
@@ -24,7 +24,7 @@ module GitHelper
24
24
  private def process_dir(current_dir, original_dir)
25
25
  Dir.chdir(current_dir)
26
26
 
27
- if File.exist?('.git') && cli.ask_yes_no(
27
+ if File.exist?('.git') && highline.ask_yes_no(
28
28
  "Found git directory: #{current_dir}. Do you wish to proceed in updating #{current_dir}'s remote URLs? (y/n)"
29
29
  )
30
30
  process_git_repository
@@ -69,8 +69,8 @@ module GitHelper
69
69
  @local_code ||= GitHelper::LocalCode.new
70
70
  end
71
71
 
72
- private def cli
73
- @cli ||= GitHelper::HighlineCli.new
72
+ private def highline
73
+ @highline ||= HighlineWrapper.new
74
74
  end
75
75
  end
76
76
  end
@@ -29,7 +29,7 @@ module GitHelper
29
29
 
30
30
  # rubocop:disable Metrics/MethodLength
31
31
  private def ask_for_clarification
32
- resp = cli.ask(
32
+ resp = highline.ask(
33
33
  'Found git remotes for both GitHub and GitLab. Would you like to proceed ' \
34
34
  'with GitLab or GitHub? (github/gitlab)'
35
35
  ).downcase
@@ -58,7 +58,7 @@ module GitHelper
58
58
  local_project: local_project,
59
59
  local_branch: local_branch,
60
60
  local_code: local_code,
61
- cli: cli
61
+ highline: highline
62
62
  }
63
63
  end
64
64
 
@@ -72,10 +72,10 @@ module GitHelper
72
72
 
73
73
  private def base_branch
74
74
  @base_branch ||=
75
- if cli.ask_yes_no("Is '#{default_branch}' the correct base branch for your new code request? (y/n)")
75
+ if highline.ask_yes_no("Is '#{default_branch}' the correct base branch for your new code request? (y/n)")
76
76
  default_branch
77
77
  else
78
- cli.ask('Base branch?')
78
+ highline.ask('Base branch?')
79
79
  end
80
80
  end
81
81
 
@@ -89,17 +89,17 @@ module GitHelper
89
89
 
90
90
  private def new_code_request_title
91
91
  @new_code_request_title ||=
92
- if autogenerated_title && cli.ask_yes_no(
92
+ if autogenerated_title && highline.ask_yes_no(
93
93
  "Accept the autogenerated code request title '#{autogenerated_title}'? (y/n)"
94
94
  )
95
95
  autogenerated_title
96
96
  else
97
- cli.ask('Title?')
97
+ highline.ask('Title?')
98
98
  end
99
99
  end
100
100
 
101
- private def cli
102
- @cli ||= GitHelper::HighlineCli.new
101
+ private def highline
102
+ @highline ||= HighlineWrapper.new
103
103
  end
104
104
 
105
105
  private def local_code
@@ -2,13 +2,13 @@
2
2
 
3
3
  module GitHelper
4
4
  class GitLabMergeRequest
5
- attr_accessor :local_project, :local_branch, :local_code, :cli, :base_branch, :new_mr_title
5
+ attr_accessor :local_project, :local_branch, :local_code, :highline, :base_branch, :new_mr_title
6
6
 
7
7
  def initialize(options)
8
8
  @local_project = options[:local_project]
9
9
  @local_branch = options[:local_branch]
10
10
  @local_code = options[:local_code]
11
- @cli = options[:cli]
11
+ @highline = options[:highline]
12
12
  end
13
13
 
14
14
  # rubocop:disable Metrics/MethodLength
@@ -97,12 +97,12 @@ module GitHelper
97
97
  # rubocop:disable Metrics/MethodLength
98
98
  private def determine_template
99
99
  if mr_template_options.count == 1
100
- apply_single_template = cli.ask_yes_no(
100
+ apply_single_template = highline.ask_yes_no(
101
101
  "Apply the merge request template from #{mr_template_options.first}? (y/n)"
102
102
  )
103
103
  @template_name_to_apply = mr_template_options.first if apply_single_template
104
104
  else
105
- response = cli.ask_options(
105
+ response = highline.ask_options(
106
106
  'Which merge request template should be applied?', mr_template_options << 'None'
107
107
  )
108
108
  @template_name_to_apply = response unless response == 'None'
@@ -121,16 +121,16 @@ module GitHelper
121
121
  end
122
122
 
123
123
  private def mr_id
124
- @mr_id ||= cli.ask('Merge Request ID?')
124
+ @mr_id ||= highline.ask('Merge Request ID?')
125
125
  end
126
126
 
127
127
  private def squash_merge_request
128
- @squash_merge_request ||= cli.ask_yes_no('Squash merge request? (y/n)')
128
+ @squash_merge_request ||= highline.ask_yes_no('Squash merge request? (y/n)')
129
129
  end
130
130
 
131
131
  private def remove_source_branch
132
132
  @remove_source_branch ||=
133
- existing_project.remove_source_branch_after_merge || cli.ask_yes_no(
133
+ existing_project.remove_source_branch_after_merge || highline.ask_yes_no(
134
134
  'Remove source branch after merging? (y/n)'
135
135
  )
136
136
  end
@@ -3,7 +3,7 @@
3
3
  module GitHelper
4
4
  class NewBranch
5
5
  def execute(new_branch_name = nil)
6
- branch_name = new_branch_name || GitHelper::HighlineCli.new.ask('New branch name?')
6
+ branch_name = new_branch_name || HighlineWrapper.new.ask('New branch name?')
7
7
  puts "Attempting to create a new branch: #{branch_name}"
8
8
  GitHelper::LocalCode.new.new_branch(branch_name)
9
9
  end
@@ -2,13 +2,13 @@
2
2
 
3
3
  module GitHelper
4
4
  class GitHubPullRequest
5
- attr_accessor :local_repo, :local_branch, :local_code, :cli, :base_branch, :new_pr_title
5
+ attr_accessor :local_repo, :local_branch, :local_code, :highline, :base_branch, :new_pr_title
6
6
 
7
7
  def initialize(options)
8
8
  @local_repo = options[:local_project]
9
9
  @local_branch = options[:local_branch]
10
10
  @local_code = options[:local_code]
11
- @cli = options[:cli]
11
+ @highline = options[:highline]
12
12
  end
13
13
 
14
14
  # rubocop:disable Metrics/MethodLength
@@ -102,12 +102,12 @@ module GitHelper
102
102
  # rubocop:disable Metrics/MethodLength
103
103
  private def determine_template
104
104
  if pr_template_options.count == 1
105
- apply_single_template = cli.ask_yes_no(
105
+ apply_single_template = highline.ask_yes_no(
106
106
  "Apply the pull request template from #{pr_template_options.first}? (y/n)"
107
107
  )
108
108
  @template_name_to_apply = pr_template_options.first if apply_single_template
109
109
  else
110
- response = cli.ask_options(
110
+ response = highline.ask_options(
111
111
  'Which pull request template should be applied?', pr_template_options << 'None'
112
112
  )
113
113
  @template_name_to_apply = response unless response == 'None'
@@ -126,7 +126,7 @@ module GitHelper
126
126
  end
127
127
 
128
128
  private def pr_id
129
- @pr_id ||= cli.ask('Pull Request ID?')
129
+ @pr_id ||= highline.ask('Pull Request ID?')
130
130
  end
131
131
 
132
132
  private def merge_method
@@ -134,7 +134,7 @@ module GitHelper
134
134
  if merge_options.length == 1
135
135
  merge_options.first
136
136
  else
137
- cli.ask_options('Merge method?', merge_options)
137
+ highline.ask_options('Merge method?', merge_options)
138
138
  end
139
139
  end
140
140
 
@@ -110,7 +110,7 @@ module GitHelper
110
110
  end
111
111
 
112
112
  private def highline
113
- @highline ||= GitHelper::HighlineCli.new
113
+ @highline ||= HighlineWrapper.new
114
114
  end
115
115
  end
116
116
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitHelper
4
- VERSION = '3.3.2'
4
+ VERSION = '3.3.3'
5
5
  end
@@ -6,7 +6,7 @@ require 'git_helper'
6
6
  describe GitHelper::ChangeRemote do
7
7
  let(:remote1) { "git@github.com:#{old_owner}/#{project}.git" }
8
8
  let(:project) { Faker::Lorem.word }
9
- let(:cli) { double(:highline_cli, ask_yes_no: true) }
9
+ let(:highline_wrapper) { double(:highline_wrapper, ask_yes_no: true) }
10
10
  let(:old_owner) { Faker::Internet.username }
11
11
  let(:new_owner) { Faker::Internet.username }
12
12
  let(:directory_entries) { ['.', '..', project, Faker::Lorem.word, Faker::Lorem.word] }
@@ -25,7 +25,7 @@ describe GitHelper::ChangeRemote do
25
25
  subject { GitHelper::ChangeRemote.new(old_owner, new_owner) }
26
26
 
27
27
  before do
28
- allow(GitHelper::HighlineCli).to receive(:new).and_return(cli)
28
+ allow(HighlineWrapper).to receive(:new).and_return(highline_wrapper)
29
29
  allow(GitHelper::LocalCode).to receive(:new).and_return(local_code)
30
30
  allow(subject).to receive(:puts)
31
31
  end
@@ -74,7 +74,7 @@ describe GitHelper::ChangeRemote do
74
74
  end
75
75
 
76
76
  context 'when the user says not to process the directory' do
77
- let(:cli) { double(:highline_cli, ask_yes_no: false) }
77
+ let(:highline_wrapper) { double(:highline_wrapper, ask_yes_no: false) }
78
78
 
79
79
  it 'should not call to process the directory' do
80
80
  expect(subject).not_to receive(:process_git_repository)
@@ -167,10 +167,10 @@ describe GitHelper::ChangeRemote do
167
167
  end
168
168
  end
169
169
 
170
- describe '#cli' do
171
- it 'should create a new highline CLI instance' do
172
- expect(GitHelper::HighlineCli).to receive(:new)
173
- subject.send(:cli)
170
+ describe '#highline' do
171
+ it 'should create a new highline_wrapper instance' do
172
+ expect(HighlineWrapper).to receive(:new)
173
+ subject.send(:highline)
174
174
  end
175
175
  end
176
176
  end
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  require 'git_helper'
5
5
 
6
6
  describe GitHelper::CodeRequest do
7
- let(:highline_cli) { double(:highline_cli) }
7
+ let(:highline_wrapper) { double(:highline_wrapper) }
8
8
  let(:local_code) { double(:local_code, project_name: Faker::Lorem.word, branch: Faker::Lorem.word) }
9
9
  let(:process_project) { double(:process_project, create: :created, merge: :merged) }
10
10
  let(:base_branch) { Faker::Lorem.word }
@@ -14,7 +14,7 @@ describe GitHelper::CodeRequest do
14
14
 
15
15
  before do
16
16
  allow(GitHelper::LocalCode).to receive(:new).and_return(local_code)
17
- allow(GitHelper::HighlineCli).to receive(:new).and_return(highline_cli)
17
+ allow(HighlineWrapper).to receive(:new).and_return(highline_wrapper)
18
18
  allow(subject).to receive(:puts)
19
19
  end
20
20
 
@@ -103,19 +103,19 @@ describe GitHelper::CodeRequest do
103
103
 
104
104
  describe '#ask_for_clarification' do
105
105
  it 'should ask the CLI' do
106
- expect(highline_cli).to receive(:ask).and_return('github')
106
+ expect(highline_wrapper).to receive(:ask).and_return('github')
107
107
  subject.send(:ask_for_clarification)
108
108
  end
109
109
 
110
110
  context 'when response is github' do
111
111
  it 'should return github_pull_request' do
112
- allow(highline_cli).to receive(:ask).and_return('github')
112
+ allow(highline_wrapper).to receive(:ask).and_return('github')
113
113
  expect(subject).to receive(:github_pull_request)
114
114
  subject.send(:ask_for_clarification)
115
115
  end
116
116
 
117
117
  it 'should return github_pull_request' do
118
- allow(highline_cli).to receive(:ask).and_return('Github')
118
+ allow(highline_wrapper).to receive(:ask).and_return('Github')
119
119
  expect(subject).to receive(:github_pull_request)
120
120
  subject.send(:ask_for_clarification)
121
121
  end
@@ -123,13 +123,13 @@ describe GitHelper::CodeRequest do
123
123
 
124
124
  context 'when response is gitlab' do
125
125
  it 'should return gitlab_merge_request' do
126
- allow(highline_cli).to receive(:ask).and_return('gitlab')
126
+ allow(highline_wrapper).to receive(:ask).and_return('gitlab')
127
127
  expect(subject).to receive(:gitlab_merge_request)
128
128
  subject.send(:ask_for_clarification)
129
129
  end
130
130
 
131
131
  it 'should return gitlab_merge_request' do
132
- allow(highline_cli).to receive(:ask).and_return('Gitlab')
132
+ allow(highline_wrapper).to receive(:ask).and_return('Gitlab')
133
133
  expect(subject).to receive(:gitlab_merge_request)
134
134
  subject.send(:ask_for_clarification)
135
135
  end
@@ -138,7 +138,7 @@ describe GitHelper::CodeRequest do
138
138
  # Unfortunately this test sometimes fails... just rerun the tests if it does
139
139
  context 'when response is neither' do
140
140
  it 'should raise an error' do
141
- allow(highline_cli).to receive(:ask).and_return(Faker::Lorem.word)
141
+ allow(highline_wrapper).to receive(:ask).and_return(Faker::Lorem.word)
142
142
  expect(subject).to receive(:exit)
143
143
  subject.send(:ask_for_clarification)
144
144
  end
@@ -176,23 +176,23 @@ describe GitHelper::CodeRequest do
176
176
  describe '#base_branch' do
177
177
  it 'should call the default branch' do
178
178
  expect(subject).to receive(:default_branch)
179
- allow(highline_cli).to receive(:ask_yes_no).at_least(:once)
180
- allow(highline_cli).to receive(:ask).at_least(:once).and_return(base_branch)
179
+ allow(highline_wrapper).to receive(:ask_yes_no).at_least(:once)
180
+ allow(highline_wrapper).to receive(:ask).at_least(:once).and_return(base_branch)
181
181
  subject.send(:base_branch)
182
182
  end
183
183
 
184
184
  it 'should ask the CLI to ask the user' do
185
185
  allow(subject).to receive(:default_branch)
186
- expect(highline_cli).to receive(:ask_yes_no).at_least(:once)
187
- allow(highline_cli).to receive(:ask).at_least(:once).and_return(base_branch)
186
+ expect(highline_wrapper).to receive(:ask_yes_no).at_least(:once)
187
+ allow(highline_wrapper).to receive(:ask).at_least(:once).and_return(base_branch)
188
188
  subject.send(:base_branch)
189
189
  end
190
190
 
191
191
  context 'if the user says no' do
192
192
  it 'definitely asks for the users base branch' do
193
193
  allow(subject).to receive(:default_branch)
194
- expect(highline_cli).to receive(:ask_yes_no).at_least(:once).and_return(false)
195
- expect(highline_cli).to receive(:ask).at_least(:once).and_return(base_branch)
194
+ expect(highline_wrapper).to receive(:ask_yes_no).at_least(:once).and_return(false)
195
+ expect(highline_wrapper).to receive(:ask).at_least(:once).and_return(base_branch)
196
196
  subject.send(:base_branch)
197
197
  end
198
198
  end
@@ -200,8 +200,8 @@ describe GitHelper::CodeRequest do
200
200
  context 'if the user says yes' do
201
201
  it 'does not ask for the users base branch' do
202
202
  allow(subject).to receive(:default_branch)
203
- expect(highline_cli).to receive(:ask_yes_no).at_least(:once).and_return(true)
204
- expect(highline_cli).not_to receive(:base_branch)
203
+ expect(highline_wrapper).to receive(:ask_yes_no).at_least(:once).and_return(true)
204
+ expect(highline_wrapper).not_to receive(:base_branch)
205
205
  subject.send(:base_branch)
206
206
  end
207
207
  end
@@ -218,23 +218,23 @@ describe GitHelper::CodeRequest do
218
218
  describe '#new_code_request_title' do
219
219
  it 'should call autogenerated title method' do
220
220
  expect(subject).to receive(:autogenerated_title)
221
- allow(highline_cli).to receive(:ask_yes_no).at_least(:once)
222
- allow(highline_cli).to receive(:ask).at_least(:once).and_return(title)
221
+ allow(highline_wrapper).to receive(:ask_yes_no).at_least(:once)
222
+ allow(highline_wrapper).to receive(:ask).at_least(:once).and_return(title)
223
223
  subject.send(:new_code_request_title)
224
224
  end
225
225
 
226
226
  it 'should ask the CLI to ask the user' do
227
227
  allow(subject).to receive(:autogenerated_title).and_return(Faker::Lorem.sentence)
228
- expect(highline_cli).to receive(:ask_yes_no).at_least(:once)
229
- allow(highline_cli).to receive(:ask).at_least(:once).and_return(title)
228
+ expect(highline_wrapper).to receive(:ask_yes_no).at_least(:once)
229
+ allow(highline_wrapper).to receive(:ask).at_least(:once).and_return(title)
230
230
  subject.send(:new_code_request_title)
231
231
  end
232
232
 
233
233
  context 'if the user says no' do
234
234
  it 'definitely asks for the users title' do
235
235
  allow(subject).to receive(:autogenerated_title).and_return(Faker::Lorem.sentence)
236
- expect(highline_cli).to receive(:ask_yes_no).at_least(:once).and_return(false)
237
- expect(highline_cli).to receive(:ask).at_least(:once).and_return(title)
236
+ expect(highline_wrapper).to receive(:ask_yes_no).at_least(:once).and_return(false)
237
+ expect(highline_wrapper).to receive(:ask).at_least(:once).and_return(title)
238
238
  subject.send(:new_code_request_title)
239
239
  end
240
240
  end
@@ -242,8 +242,8 @@ describe GitHelper::CodeRequest do
242
242
  context 'if the user says yes to original title' do
243
243
  it 'does not ask for the users chosen title' do
244
244
  allow(subject).to receive(:autogenerated_title).and_return(Faker::Lorem.sentence)
245
- expect(highline_cli).to receive(:ask_yes_no).at_least(:once).and_return(true)
246
- expect(highline_cli).not_to receive(:ask)
245
+ expect(highline_wrapper).to receive(:ask_yes_no).at_least(:once).and_return(true)
246
+ expect(highline_wrapper).not_to receive(:ask)
247
247
  subject.send(:new_code_request_title)
248
248
  end
249
249
  end
@@ -256,10 +256,10 @@ describe GitHelper::CodeRequest do
256
256
  end
257
257
  end
258
258
 
259
- describe '#cli' do
260
- it 'should call the octokit client' do
261
- expect(GitHelper::HighlineCli).to receive(:new).and_return(highline_cli)
262
- subject.send(:cli)
259
+ describe '#highline' do
260
+ it 'should create a highline_wrapper client' do
261
+ expect(HighlineWrapper).to receive(:new).and_return(highline_wrapper)
262
+ subject.send(:highline)
263
263
  end
264
264
  end
265
265
  end
@@ -5,7 +5,7 @@ require 'git_helper'
5
5
 
6
6
  describe GitHelper::GitLabMergeRequest do
7
7
  let(:local_code) { double(:local_code, read_template: Faker::Lorem.word) }
8
- let(:highline_cli) { double(:highline_cli) }
8
+ let(:highline_wrapper) { double(:highline_wrapper) }
9
9
  let(:gitlab_client_client) { double(:gitlab_client_client, project: :project, merge_request: :merge_request, create_merge_request: :created) }
10
10
  let(:gitlab_client) { double(:gitlab_client, client: gitlab_client_client) }
11
11
  let(:diff_refs) { double(:diff_refs, base_sha: :base, head_sha: :head) }
@@ -22,7 +22,7 @@ describe GitHelper::GitLabMergeRequest do
22
22
  local_project: Faker::Lorem.word,
23
23
  local_branch: Faker::Lorem.word,
24
24
  local_code: local_code,
25
- cli: highline_cli
25
+ highline: highline_wrapper
26
26
  }
27
27
  end
28
28
 
@@ -121,19 +121,19 @@ describe GitHelper::GitLabMergeRequest do
121
121
 
122
122
  it 'should call the CLI to ask about a single template' do
123
123
  allow(subject).to receive(:mr_template_options).and_return([template])
124
- expect(highline_cli).to receive(:ask_yes_no).and_return(true)
124
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
125
125
  subject.send(:template_name_to_apply)
126
126
  end
127
127
 
128
128
  it 'should return the single template if the user says yes' do
129
129
  allow(subject).to receive(:mr_template_options).and_return([template])
130
- allow(highline_cli).to receive(:ask_yes_no).and_return(true)
130
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(true)
131
131
  expect(subject.send(:template_name_to_apply)).to eq(template)
132
132
  end
133
133
 
134
134
  it 'should return nil if the user says no' do
135
135
  allow(subject).to receive(:mr_template_options).and_return([template])
136
- allow(highline_cli).to receive(:ask_yes_no).and_return(false)
136
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(false)
137
137
  expect(subject.send(:template_name_to_apply)).to eq(nil)
138
138
  end
139
139
  end
@@ -144,19 +144,19 @@ describe GitHelper::GitLabMergeRequest do
144
144
 
145
145
  it 'should call the CLI to ask which of multiple templates to apply' do
146
146
  allow(subject).to receive(:mr_template_options).and_return([template1, template2])
147
- expect(highline_cli).to receive(:ask_options).and_return(template1)
147
+ expect(highline_wrapper).to receive(:ask_options).and_return(template1)
148
148
  subject.send(:template_name_to_apply)
149
149
  end
150
150
 
151
151
  it 'should return the answer template if the user says yes' do
152
152
  allow(subject).to receive(:mr_template_options).and_return([template1, template2])
153
- allow(highline_cli).to receive(:ask_options).and_return(template1)
153
+ allow(highline_wrapper).to receive(:ask_options).and_return(template1)
154
154
  expect(subject.send(:template_name_to_apply)).to eq(template1)
155
155
  end
156
156
 
157
157
  it 'should return nil if the user says no' do
158
158
  allow(subject).to receive(:mr_template_options).and_return([template1, template2])
159
- allow(highline_cli).to receive(:ask_options).and_return('None')
159
+ allow(highline_wrapper).to receive(:ask_options).and_return('None')
160
160
  expect(subject.send(:template_name_to_apply)).to eq(nil)
161
161
  end
162
162
  end
@@ -171,25 +171,25 @@ describe GitHelper::GitLabMergeRequest do
171
171
 
172
172
  describe '#mr_id' do
173
173
  it 'should ask the CLI for the code request ID' do
174
- expect(highline_cli).to receive(:ask).and_return(Faker::Number.number)
174
+ expect(highline_wrapper).to receive(:ask).and_return(Faker::Number.number)
175
175
  subject.send(:mr_id)
176
176
  end
177
177
 
178
178
  it 'should equal an integer' do
179
179
  pr_id = Faker::Number.number
180
- expect(highline_cli).to receive(:ask).and_return(pr_id)
180
+ expect(highline_wrapper).to receive(:ask).and_return(pr_id)
181
181
  expect(subject.send(:mr_id)).to eq(pr_id)
182
182
  end
183
183
  end
184
184
 
185
185
  describe '#squash_merge_request' do
186
186
  it 'should ask the CLI for the code request ID' do
187
- expect(highline_cli).to receive(:ask_yes_no).and_return(true)
187
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
188
188
  subject.send(:squash_merge_request)
189
189
  end
190
190
 
191
191
  it 'should be a boolean' do
192
- expect(highline_cli).to receive(:ask_yes_no).and_return(false)
192
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(false)
193
193
  expect([true, false]).to include(subject.send(:squash_merge_request))
194
194
  end
195
195
  end
@@ -201,12 +201,12 @@ describe GitHelper::GitLabMergeRequest do
201
201
 
202
202
  context 'when the existing project has no setting' do
203
203
  it 'should ask the CLI for the code request ID' do
204
- expect(highline_cli).to receive(:ask_yes_no).and_return(true)
204
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
205
205
  subject.send(:remove_source_branch)
206
206
  end
207
207
 
208
208
  it 'should be a boolean' do
209
- allow(highline_cli).to receive(:ask_yes_no).and_return(false)
209
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(false)
210
210
  expect([true, false]).to include(subject.send(:remove_source_branch))
211
211
  end
212
212
  end
@@ -223,7 +223,7 @@ describe GitHelper::GitLabMergeRequest do
223
223
 
224
224
  it 'should return the existing projects setting if it exists' do
225
225
  allow(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: false))
226
- allow(highline_cli).to receive(:ask_yes_no).and_return(true)
226
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(true)
227
227
  expect(subject.send(:remove_source_branch)).to eq(true)
228
228
  end
229
229
  end
@@ -237,7 +237,7 @@ describe GitHelper::GitLabMergeRequest do
237
237
 
238
238
  describe '#existing_mr' do
239
239
  it 'should call the gitlab client' do
240
- allow(highline_cli).to receive(:ask).and_return(Faker::Number.number)
240
+ allow(highline_wrapper).to receive(:ask).and_return(Faker::Number.number)
241
241
  expect(gitlab_client_client).to receive(:merge_request).and_return(:merge_request)
242
242
  subject.send(:existing_mr)
243
243
  end
@@ -6,13 +6,13 @@ require 'git_helper'
6
6
  describe GitHelper::NewBranch do
7
7
  let(:new_branch_name) { 'new-branch-name' }
8
8
  let(:local_code) { double(:local_code, new_branch: :commit) }
9
- let(:cli) { double(:highline_cli, ask: new_branch_name) }
9
+ let(:highline) { double(:highline_wrapper, ask: new_branch_name) }
10
10
 
11
11
  subject { GitHelper::NewBranch.new }
12
12
 
13
13
  before do
14
14
  allow(GitHelper::LocalCode).to receive(:new).and_return(local_code)
15
- allow(GitHelper::HighlineCli).to receive(:new).and_return(cli)
15
+ allow(HighlineWrapper).to receive(:new).and_return(highline)
16
16
  allow(subject).to receive(:puts)
17
17
  end
18
18
 
@@ -27,20 +27,20 @@ describe GitHelper::NewBranch do
27
27
  end
28
28
 
29
29
  context 'when no branch name is passed in' do
30
- it 'should call the highline cli' do
31
- expect(GitHelper::HighlineCli).to receive(:new).and_return(cli)
30
+ it 'should call the highline client' do
31
+ expect(HighlineWrapper).to receive(:new).and_return(highline)
32
32
  subject.execute
33
33
  end
34
34
 
35
- it 'should ask the highline cli what the new branch name should be' do
36
- expect(cli).to receive(:ask)
35
+ it 'should ask the highline client what the new branch name should be' do
36
+ expect(highline).to receive(:ask)
37
37
  subject.execute
38
38
  end
39
39
  end
40
40
 
41
41
  context 'when there is a branch name passed in' do
42
- it 'should not create a highline cli' do
43
- expect(GitHelper::HighlineCli).not_to receive(:new)
42
+ it 'should not create a highline_wrapper client' do
43
+ expect(HighlineWrapper).not_to receive(:new)
44
44
  subject.execute(new_branch_name)
45
45
  end
46
46
  end
@@ -5,7 +5,7 @@ require 'git_helper'
5
5
 
6
6
  describe GitHelper::GitHubPullRequest do
7
7
  let(:local_code) { double(:local_code, read_template: Faker::Lorem.word) }
8
- let(:highline_cli) { double(:highline_cli) }
8
+ let(:highline_wrapper) { double(:highline_wrapper) }
9
9
  let(:octokit_client_client) { double(:octokit_client_client, project: :project, merge_request: :merge_request, create_merge_request: :created) }
10
10
  let(:octokit_client) { double(:octokit_client, client: octokit_client_client) }
11
11
 
@@ -14,7 +14,7 @@ describe GitHelper::GitHubPullRequest do
14
14
  local_project: Faker::Lorem.word,
15
15
  local_branch: Faker::Lorem.word,
16
16
  local_code: local_code,
17
- cli: highline_cli
17
+ highline: highline_wrapper
18
18
  }
19
19
  end
20
20
 
@@ -103,19 +103,19 @@ describe GitHelper::GitHubPullRequest do
103
103
 
104
104
  it 'should call the CLI to ask about a single template' do
105
105
  allow(subject).to receive(:pr_template_options).and_return([template])
106
- expect(highline_cli).to receive(:ask_yes_no).and_return(true)
106
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
107
107
  subject.send(:template_name_to_apply)
108
108
  end
109
109
 
110
110
  it 'should return the single template if the user says yes' do
111
111
  allow(subject).to receive(:pr_template_options).and_return([template])
112
- allow(highline_cli).to receive(:ask_yes_no).and_return(true)
112
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(true)
113
113
  expect(subject.send(:template_name_to_apply)).to eq(template)
114
114
  end
115
115
 
116
116
  it 'should return nil if the user says no' do
117
117
  allow(subject).to receive(:pr_template_options).and_return([template])
118
- allow(highline_cli).to receive(:ask_yes_no).and_return(false)
118
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(false)
119
119
  expect(subject.send(:template_name_to_apply)).to eq(nil)
120
120
  end
121
121
  end
@@ -126,19 +126,19 @@ describe GitHelper::GitHubPullRequest do
126
126
 
127
127
  it 'should call the CLI to ask which of multiple templates to apply' do
128
128
  allow(subject).to receive(:pr_template_options).and_return([template1, template2])
129
- expect(highline_cli).to receive(:ask_options).and_return(template1)
129
+ expect(highline_wrapper).to receive(:ask_options).and_return(template1)
130
130
  subject.send(:template_name_to_apply)
131
131
  end
132
132
 
133
133
  it 'should return the answer template if the user says yes' do
134
134
  allow(subject).to receive(:pr_template_options).and_return([template1, template2])
135
- allow(highline_cli).to receive(:ask_options).and_return(template1)
135
+ allow(highline_wrapper).to receive(:ask_options).and_return(template1)
136
136
  expect(subject.send(:template_name_to_apply)).to eq(template1)
137
137
  end
138
138
 
139
139
  it 'should return nil if the user says no' do
140
140
  allow(subject).to receive(:pr_template_options).and_return([template1, template2])
141
- allow(highline_cli).to receive(:ask_options).and_return('None')
141
+ allow(highline_wrapper).to receive(:ask_options).and_return('None')
142
142
  expect(subject.send(:template_name_to_apply)).to eq(nil)
143
143
  end
144
144
  end
@@ -153,13 +153,13 @@ describe GitHelper::GitHubPullRequest do
153
153
 
154
154
  describe '#pr_id' do
155
155
  it 'should ask the CLI for the code request ID' do
156
- expect(highline_cli).to receive(:ask).and_return(Faker::Number.number)
156
+ expect(highline_wrapper).to receive(:ask).and_return(Faker::Number.number)
157
157
  subject.send(:pr_id)
158
158
  end
159
159
 
160
160
  it 'should equal an integer' do
161
161
  pr_id = Faker::Number.number
162
- expect(highline_cli).to receive(:ask).and_return(pr_id)
162
+ expect(highline_wrapper).to receive(:ask).and_return(pr_id)
163
163
  expect(subject.send(:pr_id)).to eq(pr_id)
164
164
  end
165
165
  end
@@ -169,16 +169,16 @@ describe GitHelper::GitHubPullRequest do
169
169
 
170
170
  before do
171
171
  allow(subject).to receive(:existing_project).and_return(project)
172
- allow(highline_cli).to receive(:ask_options)
172
+ allow(highline_wrapper).to receive(:ask_options)
173
173
  end
174
174
 
175
175
  it 'should ask the CLI for the merge_method' do
176
- expect(highline_cli).to receive(:ask_options).and_return('merge')
176
+ expect(highline_wrapper).to receive(:ask_options).and_return('merge')
177
177
  subject.send(:merge_method)
178
178
  end
179
179
 
180
180
  it 'should be a string' do
181
- allow(highline_cli).to receive(:ask_options).and_return('merge')
181
+ allow(highline_wrapper).to receive(:ask_options).and_return('merge')
182
182
  expect(subject.send(:merge_method)).to be_a(String)
183
183
  end
184
184
 
@@ -186,7 +186,7 @@ describe GitHelper::GitHubPullRequest do
186
186
  let(:project) { double(:project, allow_merge_commit: true, allow_squash_merge: false, allow_rebase_merge: false) }
187
187
 
188
188
  it 'should not ask the CLI anything' do
189
- expect(highline_cli).not_to receive(:merge_method)
189
+ expect(highline_wrapper).not_to receive(:merge_method)
190
190
  subject.send(:merge_method)
191
191
  end
192
192
  end
@@ -241,7 +241,7 @@ describe GitHelper::GitHubPullRequest do
241
241
 
242
242
  describe '#existing_pr' do
243
243
  it 'should call the octokit client' do
244
- allow(highline_cli).to receive(:ask).and_return(Faker::Number.number)
244
+ allow(highline_wrapper).to receive(:ask).and_return(Faker::Number.number)
245
245
  expect(octokit_client_client).to receive(:pull_request).and_return(:pull_request)
246
246
  subject.send(:existing_pr)
247
247
  end
@@ -4,11 +4,10 @@ require 'spec_helper'
4
4
  require 'git_helper'
5
5
 
6
6
  describe GitHelper::Setup do
7
- let(:response) { double(:response, readline: true, to_s: Faker::Lorem.sentence) }
8
- let(:highline_cli) { double(:highline_cli, ask: response, ask_yes_no: true) }
7
+ let(:highline_wrapper) { double(:highline_wrapper, ask: Faker::Lorem.word, ask_yes_no: true) }
9
8
 
10
9
  before do
11
- allow(GitHelper::HighlineCli).to receive(:new).and_return(highline_cli)
10
+ allow(HighlineWrapper).to receive(:new).and_return(highline_wrapper)
12
11
  allow(subject).to receive(:puts)
13
12
  end
14
13
 
@@ -17,9 +16,19 @@ describe GitHelper::Setup do
17
16
  end
18
17
 
19
18
  describe '#execute' do
20
- it 'should ask a question if the config file exists' do
19
+ it 'only asks the user one question if the config file does not exist' do
20
+ allow(subject).to receive(:config_file_exists?).and_return(false)
21
21
  allow(File).to receive(:exists?).and_return(true)
22
- expect(highline_cli).to receive(:ask_yes_no).and_return(true)
22
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(true).exactly(:once)
23
+ allow(subject).to receive(:create_or_update_config_file).and_return(true)
24
+ allow(subject).to receive(:create_or_update_plugin_files)
25
+ subject.execute
26
+ end
27
+
28
+ it 'should ask two questions if the config file exists' do
29
+ allow(subject).to receive(:config_file_exists?).and_return(true)
30
+ allow(File).to receive(:exists?).and_return(true)
31
+ expect(highline_wrapper).to receive(:ask_yes_no).and_return(true).at_least(:twice)
23
32
  allow(subject).to receive(:create_or_update_config_file).and_return(true)
24
33
  allow(subject).to receive(:create_or_update_plugin_files)
25
34
  subject.execute
@@ -27,7 +36,7 @@ describe GitHelper::Setup do
27
36
 
28
37
  it 'should call to create or update the config file' do
29
38
  allow(File).to receive(:exists?).and_return(true)
30
- allow(highline_cli).to receive(:ask_yes_no).and_return(true)
39
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(true)
31
40
  expect(subject).to receive(:create_or_update_config_file).and_return(true)
32
41
  allow(subject).to receive(:create_or_update_plugin_files)
33
42
  subject.execute
@@ -36,7 +45,7 @@ describe GitHelper::Setup do
36
45
  it 'should skip if the user opts not to continue' do
37
46
  allow(File).to receive(:exists?).and_return(true)
38
47
  allow(subject).to receive(:config_file_exists?).and_return(true)
39
- allow(highline_cli).to receive(:ask_yes_no).and_return(false)
48
+ allow(highline_wrapper).to receive(:ask_yes_no).and_return(false)
40
49
  expect(subject).not_to receive(:create_or_update_config_file)
41
50
  expect(subject).not_to receive(:create_or_update_plugin_files)
42
51
  subject.execute
@@ -71,43 +80,43 @@ describe GitHelper::Setup do
71
80
 
72
81
  describe '#ask_question' do
73
82
  it 'should use highline to ask a question' do
74
- expect(highline_cli).to receive(:ask).and_return(Faker::Lorem.word)
83
+ expect(highline_wrapper).to receive(:ask).and_return(Faker::Lorem.word)
75
84
  subject.send(:ask_question, Faker::Lorem.sentence)
76
85
  end
77
86
 
78
87
  it 'should recurse if the highline client gets an empty string' do
79
- allow(highline_cli).to receive(:ask).and_return('', Faker::Lorem.word)
88
+ allow(highline_wrapper).to receive(:ask).and_return('', Faker::Lorem.word)
80
89
  expect(subject).to receive(:ask_question).at_least(:twice).and_call_original
81
90
  subject.send(:ask_question, Faker::Lorem.sentence)
82
91
  end
83
92
 
84
93
  it 'should return the answer if it is given' do
85
94
  answer = Faker::Lorem.sentence
86
- allow(highline_cli).to receive(:ask).and_return(answer)
95
+ allow(highline_wrapper).to receive(:ask).and_return(answer)
87
96
  expect(subject.send(:ask_question, Faker::Lorem.sentence)).to be(answer)
88
97
  end
89
98
  end
90
99
 
91
100
  describe '#generate_file_contents' do
92
101
  it 'should ask two yes/no questions' do
93
- expect(highline_cli).to receive(:ask_yes_no).exactly(2).times.and_return(false)
102
+ expect(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(false)
94
103
  subject.send(:generate_file_contents)
95
104
  end
96
105
 
97
106
  it 'should ask two additional questions for each time the user says yes' do
98
- allow(highline_cli).to receive(:ask_yes_no).exactly(2).times.and_return(true, false)
107
+ allow(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(true, false)
99
108
  expect(subject).to receive(:ask_question).exactly(2).times.and_return(Faker::Lorem.word)
100
109
  subject.send(:generate_file_contents)
101
110
  end
102
111
 
103
112
  it 'should ask four additional questions for each time the user says yes' do
104
- allow(highline_cli).to receive(:ask_yes_no).exactly(2).times.and_return(true)
113
+ allow(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(true)
105
114
  expect(subject).to receive(:ask_question).exactly(4).times.and_return(Faker::Lorem.word)
106
115
  subject.send(:generate_file_contents)
107
116
  end
108
117
 
109
118
  it 'should return a string no matter what' do
110
- allow(highline_cli).to receive(:ask_yes_no).exactly(2).times.and_return(true)
119
+ allow(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(true)
111
120
  allow(subject).to receive(:ask_question).exactly(4).times.and_return(Faker::Lorem.word)
112
121
  expect(subject.send(:generate_file_contents)).to be_a(String)
113
122
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'faker'
4
+ require 'pry'
4
5
 
5
6
  # This file was generated by the `rspec --init` command. Conventionally, all
6
7
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.2
4
+ version: 3.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emma Sax
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-01 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.13'
41
41
  - !ruby/object:Gem::Dependency
42
- name: highline
42
+ name: highline_wrapper
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.0'
47
+ version: 0.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.0'
54
+ version: 0.1.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: octokit
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '4.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.13'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.13'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +154,16 @@ dependencies:
140
154
  name: rubocop
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ">="
157
+ - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '0'
159
+ version: '1.10'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - ">="
164
+ - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '0'
166
+ version: '1.10'
153
167
  description: A set of GitHub and GitLab workflow scripts to provide a smoother development
154
168
  process for your git projects.
155
169
  email:
@@ -174,7 +188,6 @@ files:
174
188
  - lib/git_helper/forget_local_commits.rb
175
189
  - lib/git_helper/git_config_reader.rb
176
190
  - lib/git_helper/gitlab_client.rb
177
- - lib/git_helper/highline_cli.rb
178
191
  - lib/git_helper/local_code.rb
179
192
  - lib/git_helper/merge_request.rb
180
193
  - lib/git_helper/new_branch.rb
@@ -191,7 +204,6 @@ files:
191
204
  - spec/git_helper/forget_local_commits_spec.rb
192
205
  - spec/git_helper/git_config_reader_spec.rb
193
206
  - spec/git_helper/gitlab_client_spec.rb
194
- - spec/git_helper/highline_cli_spec.rb
195
207
  - spec/git_helper/local_code_spec.rb
196
208
  - spec/git_helper/merge_request_spec.rb
197
209
  - spec/git_helper/new_branch_spec.rb
@@ -232,7 +244,6 @@ test_files:
232
244
  - spec/git_helper/forget_local_commits_spec.rb
233
245
  - spec/git_helper/git_config_reader_spec.rb
234
246
  - spec/git_helper/gitlab_client_spec.rb
235
- - spec/git_helper/highline_cli_spec.rb
236
247
  - spec/git_helper/local_code_spec.rb
237
248
  - spec/git_helper/merge_request_spec.rb
238
249
  - spec/git_helper/new_branch_spec.rb
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module GitHelper
4
- class HighlineCli
5
- def ask(prompt)
6
- highline_client.ask(prompt) do |conf|
7
- conf.readline = true
8
- end.to_s
9
- end
10
-
11
- def ask_yes_no(prompt)
12
- answer = highline_client.ask(prompt) do |conf|
13
- conf.readline = true
14
- end.to_s
15
-
16
- answer.empty? ? true : !!(answer =~ /^y/i)
17
- end
18
-
19
- def ask_options(prompt, choices)
20
- choices_as_string_options = ''.dup
21
- choices.each { |choice| choices_as_string_options << "#{choices.index(choice) + 1}. #{choice}\n" }
22
- compiled_prompt = "#{prompt}\n#{choices_as_string_options.strip}"
23
-
24
- index = highline_client.ask(compiled_prompt) do |conf|
25
- conf.readline = true
26
- end.to_i - 1
27
-
28
- choices[index]
29
- end
30
-
31
- private def highline_client
32
- @highline_client ||= HighLine.new
33
- end
34
- end
35
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'git_helper'
5
-
6
- describe GitHelper::HighlineCli do
7
- let(:response) { double(:response, readline: true, to_i: 3) }
8
- let(:highline_client) { double(:highline_cli, ask: response) }
9
-
10
- subject { GitHelper::HighlineCli.new }
11
-
12
- before do
13
- allow(HighLine).to receive(:new).and_return(highline_client)
14
- end
15
-
16
- describe '#ask' do
17
- it 'should ask the highline client ask' do
18
- expect(highline_client).to receive(:ask)
19
- subject.ask(Faker::Lorem.sentence)
20
- end
21
-
22
- it 'should return a string' do
23
- expect(subject.ask(Faker::Lorem.sentence)).to be_a(String)
24
- end
25
- end
26
-
27
- describe '#ask_yes_no' do
28
- it 'should ask the highline client ask' do
29
- expect(highline_client).to receive(:ask)
30
- subject.ask_yes_no(Faker::Lorem.sentence)
31
- end
32
-
33
- it 'should return a boolean' do
34
- expect(subject.ask_yes_no(Faker::Lorem.sentence)).to be_falsey
35
- end
36
-
37
- it 'should return true if we say yes' do
38
- allow(response).to receive(:to_s).and_return('y')
39
- expect(subject.ask_yes_no(Faker::Lorem.sentence)).to be_truthy
40
- end
41
- end
42
-
43
- describe '#ask_options' do
44
- it 'should ask the highline client ask' do
45
- expect(highline_client).to receive(:ask)
46
- subject.ask_options(Faker::Lorem.sentence, %w[one two three])
47
- end
48
-
49
- it 'should return a string from the options' do
50
- expect(subject.ask_options(Faker::Lorem.sentence, %w[one two three])).to be_a(String)
51
- end
52
- end
53
- end