git_helper 3.3.2 → 3.3.7

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.
@@ -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