git_helper 3.3.2 → 3.3.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,37 @@ 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)
75
- subject.send(:ask_question, Faker::Lorem.sentence)
76
- end
77
-
78
- it 'should recurse if the highline client gets an empty string' do
79
- allow(highline_cli).to receive(:ask).and_return('', Faker::Lorem.word)
80
- expect(subject).to receive(:ask_question).at_least(:twice).and_call_original
83
+ expect(highline_wrapper).to receive(:ask).and_return(Faker::Lorem.word)
81
84
  subject.send(:ask_question, Faker::Lorem.sentence)
82
85
  end
83
86
 
84
87
  it 'should return the answer if it is given' do
85
88
  answer = Faker::Lorem.sentence
86
- allow(highline_cli).to receive(:ask).and_return(answer)
89
+ allow(highline_wrapper).to receive(:ask).and_return(answer)
87
90
  expect(subject.send(:ask_question, Faker::Lorem.sentence)).to be(answer)
88
91
  end
89
92
  end
90
93
 
91
94
  describe '#generate_file_contents' do
92
95
  it 'should ask two yes/no questions' do
93
- expect(highline_cli).to receive(:ask_yes_no).exactly(2).times.and_return(false)
96
+ expect(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(false)
94
97
  subject.send(:generate_file_contents)
95
98
  end
96
99
 
97
100
  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)
101
+ allow(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(true, false)
99
102
  expect(subject).to receive(:ask_question).exactly(2).times.and_return(Faker::Lorem.word)
100
103
  subject.send(:generate_file_contents)
101
104
  end
102
105
 
103
106
  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)
107
+ allow(highline_wrapper).to receive(:ask_yes_no).exactly(2).times.and_return(true)
105
108
  expect(subject).to receive(:ask_question).exactly(4).times.and_return(Faker::Lorem.word)
106
109
  subject.send(:generate_file_contents)
107
110
  end
108
111
 
109
112
  it 'should return a string no matter what' do
110
- 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)
111
114
  allow(subject).to receive(:ask_question).exactly(4).times.and_return(Faker::Lorem.word)
112
115
  expect(subject.send(:generate_file_contents)).to be_a(String)
113
116
  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.7
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-05-19 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: '1.1'
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: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: octokit
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.18'
69
+ - !ruby/object:Gem::Dependency
70
+ name: psych
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '4'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: '4.3'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.13'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.13'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: rake
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +168,16 @@ dependencies:
140
168
  name: rubocop
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - ">="
171
+ - - "~>"
144
172
  - !ruby/object:Gem::Version
145
- version: '0'
173
+ version: '1.10'
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - ">="
178
+ - - "~>"
151
179
  - !ruby/object:Gem::Version
152
- version: '0'
180
+ version: '1.10'
153
181
  description: A set of GitHub and GitLab workflow scripts to provide a smoother development
154
182
  process for your git projects.
155
183
  email:
@@ -174,7 +202,6 @@ files:
174
202
  - lib/git_helper/forget_local_commits.rb
175
203
  - lib/git_helper/git_config_reader.rb
176
204
  - lib/git_helper/gitlab_client.rb
177
- - lib/git_helper/highline_cli.rb
178
205
  - lib/git_helper/local_code.rb
179
206
  - lib/git_helper/merge_request.rb
180
207
  - lib/git_helper/new_branch.rb
@@ -191,7 +218,6 @@ files:
191
218
  - spec/git_helper/forget_local_commits_spec.rb
192
219
  - spec/git_helper/git_config_reader_spec.rb
193
220
  - spec/git_helper/gitlab_client_spec.rb
194
- - spec/git_helper/highline_cli_spec.rb
195
221
  - spec/git_helper/local_code_spec.rb
196
222
  - spec/git_helper/merge_request_spec.rb
197
223
  - spec/git_helper/new_branch_spec.rb
@@ -218,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
244
  - !ruby/object:Gem::Version
219
245
  version: '0'
220
246
  requirements: []
221
- rubygems_version: 3.2.3
247
+ rubygems_version: 3.2.15
222
248
  signing_key:
223
249
  specification_version: 4
224
250
  summary: A set of GitHub and GitLab workflow scripts.
@@ -232,7 +258,6 @@ test_files:
232
258
  - spec/git_helper/forget_local_commits_spec.rb
233
259
  - spec/git_helper/git_config_reader_spec.rb
234
260
  - spec/git_helper/gitlab_client_spec.rb
235
- - spec/git_helper/highline_cli_spec.rb
236
261
  - spec/git_helper/local_code_spec.rb
237
262
  - spec/git_helper/merge_request_spec.rb
238
263
  - 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