git_helper 2.0.0 → 3.1.0

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +23 -15
  3. data/Guardfile +1 -1
  4. data/README.md +21 -12
  5. data/Rakefile +1 -37
  6. data/bin/git-helper +3 -10
  7. data/lib/git_helper.rb +5 -2
  8. data/lib/git_helper/change_remote.rb +0 -3
  9. data/lib/git_helper/checkout_default.rb +0 -2
  10. data/lib/git_helper/clean_branches.rb +0 -2
  11. data/lib/git_helper/code_request.rb +0 -5
  12. data/lib/git_helper/empty_commit.rb +0 -2
  13. data/lib/git_helper/forget_local_commits.rb +0 -2
  14. data/lib/git_helper/git_config_reader.rb +1 -3
  15. data/lib/git_helper/gitlab_client.rb +0 -3
  16. data/lib/git_helper/highline_cli.rb +0 -2
  17. data/lib/git_helper/local_code.rb +17 -13
  18. data/lib/git_helper/merge_request.rb +1 -4
  19. data/lib/git_helper/new_branch.rb +0 -3
  20. data/lib/git_helper/octokit_client.rb +0 -3
  21. data/lib/git_helper/pull_request.rb +1 -4
  22. data/lib/git_helper/version.rb +1 -1
  23. data/plugins.zip +0 -0
  24. data/spec/git_helper/change_remote_spec.rb +19 -16
  25. data/spec/git_helper/checkout_default_spec.rb +2 -1
  26. data/spec/git_helper/clean_branches_spec.rb +2 -1
  27. data/spec/git_helper/code_request_spec.rb +21 -18
  28. data/spec/git_helper/empty_commit_spec.rb +2 -1
  29. data/spec/git_helper/forget_local_commits_spec.rb +2 -1
  30. data/spec/git_helper/git_config_reader_spec.rb +11 -8
  31. data/spec/git_helper/gitlab_client_spec.rb +2 -1
  32. data/spec/git_helper/highline_cli_spec.rb +40 -37
  33. data/spec/git_helper/local_code_spec.rb +64 -27
  34. data/spec/git_helper/merge_request_spec.rb +36 -28
  35. data/spec/git_helper/new_branch_spec.rb +2 -1
  36. data/spec/git_helper/octokit_client_spec.rb +2 -1
  37. data/spec/git_helper/pull_request_spec.rb +36 -28
  38. data/spec/spec_helper.rb +2 -1
  39. metadata +21 -6
@@ -1,13 +1,27 @@
1
- require_relative '../../lib/git_helper/local_code.rb'
1
+ require 'spec_helper'
2
+ require 'git_helper'
2
3
 
3
4
  describe GitHelper::LocalCode do
4
5
  let(:response) { double(:response, readline: true, to_i: 5) }
5
6
  let(:local_codeent) { double(:local_code, ask: response) }
6
- let(:ssh_remote) { 'origin\tgit@github.com:emmasax4/git_helper.git (fetch)' }
7
- let(:https_remote) { 'origin\thttps://github.com/emmasax4/git_helper.git (fetch)' }
8
- let(:github_remotes) { ['origin\tgit@github.com:emmasax4/git_helper.git (fetch)', 'origin\thttps://github.com/emmasax4/git_helper.git (fetch)' ] }
9
- let(:gitlab_remotes) { ['origin\tgit@gitlab.com:emmasax4/git_helper.git (fetch)', 'origin\thttps://gitlab.com/emmasax4/git_helper.git (fetch)' ] }
7
+ let(:project_name) { Faker::Lorem.word }
8
+ let(:owner) { Faker::Name.first_name }
9
+ let(:ssh_remote) { "origin\tgit@github.com:#{owner}/#{project_name}.git (fetch)" }
10
+ let(:https_remote) { "origin\thttps://github.com/#{owner}/#{project_name}.git (fetch)" }
11
+
12
+ let(:github_remotes) do
13
+ [
14
+ "origin\tgit@github.com:#{owner}/#{project_name}.git (fetch)",
15
+ "origin\thttps://github.com/#{owner}/#{project_name}.git (fetch)"
16
+ ]
17
+ end
10
18
 
19
+ let(:gitlab_remotes) do
20
+ [
21
+ "origin\tgit@gitlab.com:#{owner}/#{project_name}.git (fetch)",
22
+ "origin\thttps://gitlab.com/#{owner}/#{project_name}.git (fetch)"
23
+ ]
24
+ end
11
25
 
12
26
  subject { GitHelper::LocalCode.new }
13
27
 
@@ -50,13 +64,13 @@ describe GitHelper::LocalCode do
50
64
  describe '#new_branch' do
51
65
  it 'should make a system call' do
52
66
  expect(subject).to receive(:system).exactly(4).times
53
- subject.new_branch('branch_name')
67
+ subject.new_branch(Faker::Lorem.word)
54
68
  end
55
69
  end
56
70
 
57
71
  describe '#change_remote' do
58
72
  it 'should return a string' do
59
- expect(subject.change_remote('name', 'url')).to be_a(String)
73
+ expect(subject.change_remote(Faker::Lorem.word, Faker::Internet.url)).to be_a(String)
60
74
  end
61
75
  end
62
76
 
@@ -95,11 +109,11 @@ describe GitHelper::LocalCode do
95
109
 
96
110
  describe '#remote_project' do
97
111
  it 'should return just the plain project if ssh' do
98
- expect(subject.remote_project(ssh_remote)).to eq('git_helper')
112
+ expect(subject.remote_project(ssh_remote)).to eq(project_name)
99
113
  end
100
114
 
101
115
  it 'should return just the plain project if https' do
102
- expect(subject.remote_project(https_remote)).to eq('git_helper')
116
+ expect(subject.remote_project(https_remote)).to eq(project_name)
103
117
  end
104
118
  end
105
119
 
@@ -143,8 +157,8 @@ describe GitHelper::LocalCode do
143
157
  end
144
158
 
145
159
  it 'should equal this project name' do
146
- allow_any_instance_of(String).to receive(:scan).and_return([['emmasax4/git_helper']])
147
- expect(subject.project_name).to eq('emmasax4/git_helper')
160
+ allow_any_instance_of(String).to receive(:scan).and_return([["#{owner}/#{project_name}"]])
161
+ expect(subject.project_name).to eq("#{owner}/#{project_name}")
148
162
  end
149
163
  end
150
164
 
@@ -163,6 +177,7 @@ describe GitHelper::LocalCode do
163
177
  describe '#template_options' do
164
178
  let(:template_identifiers) do
165
179
  {
180
+ template_directory: '.github',
166
181
  nested_directory_name: 'PULL_REQUEST_TEMPLATE',
167
182
  non_nested_file_name: 'pull_request_template'
168
183
  }
@@ -188,43 +203,65 @@ describe GitHelper::LocalCode do
188
203
 
189
204
  describe '#generate_title' do
190
205
  it 'should return a title based on the branch' do
191
- branch = 'jira-123-test-branch'
192
- expect(subject.generate_title(branch)).to eq('JIRA-123 Test branch')
206
+ prefix = Faker::Lorem.word
207
+ word1 = Faker::Lorem.word
208
+ word2 = Faker::Lorem.word
209
+ description = [word1, word2].join('-')
210
+ branch = "#{prefix}-123-#{description}"
211
+ expect(subject.generate_title(branch)).to eq("#{prefix.upcase}-123 #{[word1.capitalize, word2].join(' ')}")
193
212
  end
194
213
 
195
214
  it 'should return a title based on the branch' do
196
- branch = 'jira_123_test_branch'
197
- expect(subject.generate_title(branch)).to eq('JIRA-123 Test branch')
215
+ prefix = Faker::Lorem.word
216
+ word1 = Faker::Lorem.word
217
+ word2 = Faker::Lorem.word
218
+ description = [word1, word2].join('_')
219
+ branch = "#{prefix}_123_#{description}"
220
+ expect(subject.generate_title(branch)).to eq("#{prefix.upcase}-123 #{[word1.capitalize, word2].join(' ')}")
198
221
  end
199
222
 
200
223
  it 'should return a title based on the branch' do
201
- branch = 'jira-123_test_branch'
202
- expect(subject.generate_title(branch)).to eq('JIRA-123 Test branch')
224
+ prefix = Faker::Lorem.word
225
+ word1 = Faker::Lorem.word
226
+ word2 = Faker::Lorem.word
227
+ description = [word1, word2].join('_')
228
+ branch = "#{prefix}-123_#{description}"
229
+ expect(subject.generate_title(branch)).to eq("#{prefix.upcase}-123 #{[word1.capitalize, word2].join(' ')}")
203
230
  end
204
231
 
205
232
  it 'should return a title based on the branch' do
206
- branch = 'test_branch'
207
- expect(subject.generate_title(branch)).to eq('Test branch')
233
+ word1 = Faker::Lorem.word
234
+ word2 = Faker::Lorem.word
235
+ branch = [word1, word2].join('_')
236
+ expect(subject.generate_title(branch)).to eq([word1.capitalize, word2].join(' '))
208
237
  end
209
238
 
210
239
  it 'should return a title based on the branch' do
211
- branch = 'test-branch'
212
- expect(subject.generate_title(branch)).to eq('Test branch')
240
+ word1 = Faker::Lorem.word
241
+ word2 = Faker::Lorem.word
242
+ branch = [word1, word2].join('-')
243
+ expect(subject.generate_title(branch)).to eq([word1.capitalize, word2].join(' '))
213
244
  end
214
245
 
215
246
  it 'should return a title based on the branch' do
216
- branch = 'test'
217
- expect(subject.generate_title(branch)).to eq('Test')
247
+ branch = Faker::Lorem.word
248
+ expect(subject.generate_title(branch)).to eq(branch.capitalize)
218
249
  end
219
250
 
220
251
  it 'should return a title based on the branch' do
221
- branch = 'some_other_words_in_this_test_branch'
222
- expect(subject.generate_title(branch)).to eq('Some other words in this test branch')
252
+ word1 = Faker::Lorem.word
253
+ word2 = Faker::Lorem.word
254
+ word3 = Faker::Lorem.word
255
+ branch = [word1, word2, word3].join('_')
256
+ expect(subject.generate_title(branch)).to eq([word1.capitalize, word2, word3].join(' '))
223
257
  end
224
258
 
225
259
  it 'should return a title based on the branch' do
226
- branch = 'some-other-words-in-this-test-branch'
227
- expect(subject.generate_title(branch)).to eq('Some other words in this test branch')
260
+ word1 = Faker::Lorem.word
261
+ word2 = Faker::Lorem.word
262
+ word3 = Faker::Lorem.word
263
+ branch = [word1, word2, word3].join('-')
264
+ expect(subject.generate_title(branch)).to eq([word1.capitalize, word2, word3].join(' '))
228
265
  end
229
266
  end
230
267
  end
@@ -1,20 +1,22 @@
1
- require_relative '../../lib/git_helper/merge_request.rb'
1
+ require 'spec_helper'
2
+ require 'git_helper'
2
3
 
3
4
  describe GitHelper::GitLabMergeRequest do
4
- let(:local_code) { double(:local_code, read_template: 'template') }
5
+ let(:local_code) { double(:local_code, read_template: Faker::Lorem.word) }
5
6
  let(:highline_cli) { double(:highline_cli) }
6
7
  let(:gitlab_client_client) { double(:gitlab_client_client, project: :project, merge_request: :merge_request, create_merge_request: :created) }
7
8
  let(:gitlab_client) { double(:gitlab_client, client: gitlab_client_client) }
9
+
8
10
  let(:options) do
9
11
  {
10
- local_project: 'emmasax4/git_helper',
11
- local_branch: 'main',
12
+ local_project: Faker::Lorem.word,
13
+ local_branch: Faker::Lorem.word,
12
14
  local_code: local_code,
13
15
  cli: highline_cli
14
16
  }
15
17
  end
16
18
 
17
- subject { GitHelper::GitLabMergeRequest.new(options) }
19
+ subject { described_class.new(options) }
18
20
 
19
21
  before do
20
22
  allow(GitHelper::GitLabClient).to receive(:new).and_return(gitlab_client)
@@ -26,7 +28,7 @@ describe GitHelper::GitLabMergeRequest do
26
28
  allow(subject).to receive(:remove_source_branch).and_return(false)
27
29
  allow(subject).to receive(:new_mr_body).and_return('')
28
30
  expect(gitlab_client_client).to receive(:create_merge_request)
29
- subject.create({base_branch: 'base', new_title: 'title'})
31
+ subject.create({base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word})
30
32
  end
31
33
 
32
34
  it 'should call various other methods' do
@@ -34,7 +36,7 @@ describe GitHelper::GitLabMergeRequest do
34
36
  expect(subject).to receive(:remove_source_branch).and_return(false)
35
37
  expect(subject).to receive(:new_mr_body).and_return('')
36
38
  allow(gitlab_client_client).to receive(:create_merge_request)
37
- subject.create({base_branch: 'base', new_title: 'title'})
39
+ subject.create({base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word})
38
40
  end
39
41
 
40
42
  it 'should catch the raised error if the creation does not work' do
@@ -42,35 +44,35 @@ describe GitHelper::GitLabMergeRequest do
42
44
  allow(subject).to receive(:remove_source_branch).and_return(false)
43
45
  allow(subject).to receive(:new_mr_body).and_return('')
44
46
  allow(gitlab_client_client).to receive(:create_merge_request).and_raise(StandardError)
45
- expect(subject.create({base_branch: 'base', new_title: 'title'})).to eq(nil)
47
+ expect(subject.create({base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word})).to eq(nil)
46
48
  end
47
49
  end
48
50
 
49
51
  describe '#merge' do
50
52
  it 'should call the gitlab client to merge' do
51
53
  allow(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title'))
52
- allow(subject).to receive(:mr_id).and_return(123)
54
+ allow(subject).to receive(:mr_id).and_return(Faker::Number.number)
53
55
  expect(gitlab_client_client).to receive(:accept_merge_request)
54
56
  subject.merge
55
57
  end
56
58
 
57
59
  it 'should call various other methods' do
58
60
  expect(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title')).at_least(:once)
59
- expect(subject).to receive(:mr_id).and_return(123).at_least(:once)
61
+ expect(subject).to receive(:mr_id).and_return(Faker::Number.number).at_least(:once)
60
62
  allow(gitlab_client_client).to receive(:accept_merge_request)
61
63
  subject.merge
62
64
  end
63
65
 
64
66
  it 'should catch the raised error if the merge does not work' do
65
67
  allow(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title'))
66
- allow(subject).to receive(:mr_id).and_return(123)
68
+ allow(subject).to receive(:mr_id).and_return(Faker::Number.number)
67
69
  allow(gitlab_client_client).to receive(:accept_merge_request).and_raise(StandardError)
68
70
  expect(subject.merge).to eq(nil)
69
71
  end
70
72
 
71
73
  it 'should try to merge multiple times if the first merge errors' do
72
74
  allow(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title'))
73
- allow(subject).to receive(:mr_id).and_return(123)
75
+ allow(subject).to receive(:mr_id).and_return(Faker::Number.number)
74
76
  expect(gitlab_client_client).to receive(:accept_merge_request).and_return(double(merge_commit_sha: nil)).exactly(2).times
75
77
  expect(subject.merge).to eq(nil)
76
78
  end
@@ -104,40 +106,45 @@ describe GitHelper::GitLabMergeRequest do
104
106
  end
105
107
 
106
108
  context 'if there is one template option' do
109
+ let(:template) { Faker::Lorem.word }
110
+
107
111
  it 'should call the CLI to ask about a single template' do
108
- allow(subject).to receive(:mr_template_options).and_return(['template1'])
112
+ allow(subject).to receive(:mr_template_options).and_return([template])
109
113
  expect(highline_cli).to receive(:apply_template?).and_return(true)
110
114
  subject.send(:template_name_to_apply)
111
115
  end
112
116
 
113
117
  it 'should return the single template if the user says yes' do
114
- allow(subject).to receive(:mr_template_options).and_return(['template1'])
118
+ allow(subject).to receive(:mr_template_options).and_return([template])
115
119
  allow(highline_cli).to receive(:apply_template?).and_return(true)
116
- expect(subject.send(:template_name_to_apply)).to eq('template1')
120
+ expect(subject.send(:template_name_to_apply)).to eq(template)
117
121
  end
118
122
 
119
123
  it 'should return nil if the user says no' do
120
- allow(subject).to receive(:mr_template_options).and_return(['template1'])
124
+ allow(subject).to receive(:mr_template_options).and_return([template])
121
125
  allow(highline_cli).to receive(:apply_template?).and_return(false)
122
126
  expect(subject.send(:template_name_to_apply)).to eq(nil)
123
127
  end
124
128
  end
125
129
 
126
130
  context 'if there are multiple template options' do
131
+ let(:template1) { Faker::Lorem.word }
132
+ let(:template2) { Faker::Lorem.word }
133
+
127
134
  it 'should call the CLI to ask which of multiple templates to apply' do
128
- allow(subject).to receive(:mr_template_options).and_return(['template1', 'template2'])
129
- expect(highline_cli).to receive(:template_to_apply).and_return('template1')
135
+ allow(subject).to receive(:mr_template_options).and_return([template1, template2])
136
+ expect(highline_cli).to receive(:template_to_apply).and_return(template1)
130
137
  subject.send(:template_name_to_apply)
131
138
  end
132
139
 
133
140
  it 'should return the answer template if the user says yes' do
134
- allow(subject).to receive(:mr_template_options).and_return(['template1', 'template2'])
135
- allow(highline_cli).to receive(:template_to_apply).and_return('template1')
136
- expect(subject.send(:template_name_to_apply)).to eq('template1')
141
+ allow(subject).to receive(:mr_template_options).and_return([template1, template2])
142
+ allow(highline_cli).to receive(:template_to_apply).and_return(template1)
143
+ expect(subject.send(:template_name_to_apply)).to eq(template1)
137
144
  end
138
145
 
139
146
  it 'should return nil if the user says no' do
140
- allow(subject).to receive(:mr_template_options).and_return(['template1', 'template2'])
147
+ allow(subject).to receive(:mr_template_options).and_return([template1, template2])
141
148
  allow(highline_cli).to receive(:template_to_apply).and_return('None')
142
149
  expect(subject.send(:template_name_to_apply)).to eq(nil)
143
150
  end
@@ -153,13 +160,14 @@ describe GitHelper::GitLabMergeRequest do
153
160
 
154
161
  describe '#mr_id' do
155
162
  it 'should ask the CLI for the code request ID' do
156
- expect(highline_cli).to receive(:code_request_id).and_return(123)
163
+ expect(highline_cli).to receive(:code_request_id).and_return(Faker::Number.number)
157
164
  subject.send(:mr_id)
158
165
  end
159
166
 
160
167
  it 'should equal an integer' do
161
- expect(highline_cli).to receive(:code_request_id).and_return(123)
162
- expect(subject.send(:mr_id)).to eq(123)
168
+ pr_id = Faker::Number.number
169
+ expect(highline_cli).to receive(:code_request_id).and_return(pr_id)
170
+ expect(subject.send(:mr_id)).to eq(pr_id)
163
171
  end
164
172
  end
165
173
 
@@ -197,12 +205,12 @@ describe GitHelper::GitLabMergeRequest do
197
205
  subject.send(:remove_source_branch)
198
206
  end
199
207
 
200
- it "should return the existing project's setting if it exists" do
208
+ it 'should return the existing projects setting if it exists' do
201
209
  allow(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: true))
202
210
  expect(subject.send(:remove_source_branch)).to eq(true)
203
211
  end
204
212
 
205
- it "should return the existing project's setting if it exists" do
213
+ it 'should return the existing projects setting if it exists' do
206
214
  allow(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: false))
207
215
  allow(highline_cli).to receive(:remove_source_branch?).and_return(true)
208
216
  expect(subject.send(:remove_source_branch)).to eq(true)
@@ -218,7 +226,7 @@ describe GitHelper::GitLabMergeRequest do
218
226
 
219
227
  describe '#existing_mr' do
220
228
  it 'should call the gitlab client' do
221
- allow(highline_cli).to receive(:code_request_id).and_return(123)
229
+ allow(highline_cli).to receive(:code_request_id).and_return(Faker::Number.number)
222
230
  expect(gitlab_client_client).to receive(:merge_request).and_return(:merge_request)
223
231
  subject.send(:existing_mr)
224
232
  end
@@ -1,4 +1,5 @@
1
- require_relative '../../lib/git_helper/new_branch.rb'
1
+ require 'spec_helper'
2
+ require 'git_helper'
2
3
 
3
4
  describe GitHelper::NewBranch do
4
5
  let(:new_branch_name) { 'new-branch-name' }
@@ -1,4 +1,5 @@
1
- require_relative '../../lib/git_helper/octokit_client.rb'
1
+ require 'spec_helper'
2
+ require 'git_helper'
2
3
 
3
4
  describe GitHelper::OctokitClient do
4
5
  let(:git_config_reader) { double(:git_config_reader, github_token: :token) }
@@ -1,14 +1,16 @@
1
- require_relative '../../lib/git_helper/pull_request.rb'
1
+ require 'spec_helper'
2
+ require 'git_helper'
2
3
 
3
4
  describe GitHelper::GitHubPullRequest do
4
- let(:local_code) { double(:local_code, read_template: 'template') }
5
+ let(:local_code) { double(:local_code, read_template: Faker::Lorem.word) }
5
6
  let(:highline_cli) { double(:highline_cli) }
6
7
  let(:octokit_client_client) { double(:octokit_client_client, project: :project, merge_request: :merge_request, create_merge_request: :created) }
7
8
  let(:octokit_client) { double(:octokit_client, client: octokit_client_client) }
9
+
8
10
  let(:options) do
9
11
  {
10
- local_project: 'emmasax4/git_helper',
11
- local_branch: 'main',
12
+ local_project: Faker::Lorem.word,
13
+ local_branch: Faker::Lorem.word,
12
14
  local_code: local_code,
13
15
  cli: highline_cli
14
16
  }
@@ -24,43 +26,43 @@ describe GitHelper::GitHubPullRequest do
24
26
  it 'should call the octokit client to create' do
25
27
  allow(subject).to receive(:new_pr_body).and_return('')
26
28
  expect(octokit_client_client).to receive(:create_pull_request)
27
- subject.create({base_branch: 'base', new_title: 'title'})
29
+ subject.create({base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word})
28
30
  end
29
31
 
30
32
  it 'should call various other methods' do
31
33
  expect(subject).to receive(:new_pr_body).and_return('').at_least(:once)
32
34
  allow(octokit_client_client).to receive(:create_pull_request)
33
- subject.create({base_branch: 'base', new_title: 'title'})
35
+ subject.create({base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word})
34
36
  end
35
37
 
36
38
  it 'should catch the raised error if the creation does not work' do
37
39
  allow(subject).to receive(:new_pr_body).and_return('')
38
40
  allow(octokit_client_client).to receive(:create_pull_request).and_raise(StandardError)
39
- expect(subject.create({base_branch: 'base', new_title: 'title'})).to eq(nil)
41
+ expect(subject.create({base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word})).to eq(nil)
40
42
  end
41
43
  end
42
44
 
43
45
  describe '#merge' do
44
46
  it 'should call the octokit client to merge' do
45
- allow(subject).to receive(:existing_pr).and_return(double(title: 'title'))
47
+ allow(subject).to receive(:existing_pr).and_return(double(title: Faker::Lorem.word))
46
48
  allow(subject).to receive(:merge_method).and_return('rebase')
47
- allow(subject).to receive(:pr_id).and_return(123)
49
+ allow(subject).to receive(:pr_id).and_return(Faker::Number.number)
48
50
  expect(octokit_client_client).to receive(:merge_pull_request)
49
51
  subject.merge
50
52
  end
51
53
 
52
54
  it 'should call various other methods' do
53
- expect(subject).to receive(:existing_pr).and_return(double(title: 'title')).at_least(:once)
55
+ expect(subject).to receive(:existing_pr).and_return(double(title: Faker::Lorem.word)).at_least(:once)
54
56
  expect(subject).to receive(:merge_method).and_return('rebase').at_least(:once)
55
- expect(subject).to receive(:pr_id).and_return(123).at_least(:once)
57
+ expect(subject).to receive(:pr_id).and_return(Faker::Number.number).at_least(:once)
56
58
  allow(octokit_client_client).to receive(:merge_pull_request)
57
59
  subject.merge
58
60
  end
59
61
 
60
62
  it 'should catch the raised error if the merge does not work' do
61
- allow(subject).to receive(:existing_pr).and_return(double(title: 'title'))
63
+ allow(subject).to receive(:existing_pr).and_return(double(title: Faker::Lorem.word))
62
64
  allow(subject).to receive(:merge_method).and_return('rebase')
63
- allow(subject).to receive(:pr_id).and_return(123)
65
+ allow(subject).to receive(:pr_id).and_return(Faker::Number.number)
64
66
  allow(octokit_client_client).to receive(:merge_pull_request).and_raise(StandardError)
65
67
  expect(subject.merge).to eq(nil)
66
68
  end
@@ -94,40 +96,45 @@ describe GitHelper::GitHubPullRequest do
94
96
  end
95
97
 
96
98
  context 'if there is one template option' do
99
+ let(:template) { Faker::Lorem.word }
100
+
97
101
  it 'should call the CLI to ask about a single template' do
98
- allow(subject).to receive(:pr_template_options).and_return(['template1'])
102
+ allow(subject).to receive(:pr_template_options).and_return([template])
99
103
  expect(highline_cli).to receive(:apply_template?).and_return(true)
100
104
  subject.send(:template_name_to_apply)
101
105
  end
102
106
 
103
107
  it 'should return the single template if the user says yes' do
104
- allow(subject).to receive(:pr_template_options).and_return(['template1'])
108
+ allow(subject).to receive(:pr_template_options).and_return([template])
105
109
  allow(highline_cli).to receive(:apply_template?).and_return(true)
106
- expect(subject.send(:template_name_to_apply)).to eq('template1')
110
+ expect(subject.send(:template_name_to_apply)).to eq(template)
107
111
  end
108
112
 
109
113
  it 'should return nil if the user says no' do
110
- allow(subject).to receive(:pr_template_options).and_return(['template1'])
114
+ allow(subject).to receive(:pr_template_options).and_return([template])
111
115
  allow(highline_cli).to receive(:apply_template?).and_return(false)
112
116
  expect(subject.send(:template_name_to_apply)).to eq(nil)
113
117
  end
114
118
  end
115
119
 
116
120
  context 'if there are multiple template options' do
121
+ let(:template1) { Faker::Lorem.word }
122
+ let(:template2) { Faker::Lorem.word }
123
+
117
124
  it 'should call the CLI to ask which of multiple templates to apply' do
118
- allow(subject).to receive(:pr_template_options).and_return(['template1', 'template2'])
119
- expect(highline_cli).to receive(:template_to_apply).and_return('template1')
125
+ allow(subject).to receive(:pr_template_options).and_return([template1, template2])
126
+ expect(highline_cli).to receive(:template_to_apply).and_return(template1)
120
127
  subject.send(:template_name_to_apply)
121
128
  end
122
129
 
123
130
  it 'should return the answer template if the user says yes' do
124
- allow(subject).to receive(:pr_template_options).and_return(['template1', 'template2'])
125
- allow(highline_cli).to receive(:template_to_apply).and_return('template1')
126
- expect(subject.send(:template_name_to_apply)).to eq('template1')
131
+ allow(subject).to receive(:pr_template_options).and_return([template1, template2])
132
+ allow(highline_cli).to receive(:template_to_apply).and_return(template1)
133
+ expect(subject.send(:template_name_to_apply)).to eq(template1)
127
134
  end
128
135
 
129
136
  it 'should return nil if the user says no' do
130
- allow(subject).to receive(:pr_template_options).and_return(['template1', 'template2'])
137
+ allow(subject).to receive(:pr_template_options).and_return([template1, template2])
131
138
  allow(highline_cli).to receive(:template_to_apply).and_return('None')
132
139
  expect(subject.send(:template_name_to_apply)).to eq(nil)
133
140
  end
@@ -143,13 +150,14 @@ describe GitHelper::GitHubPullRequest do
143
150
 
144
151
  describe '#pr_id' do
145
152
  it 'should ask the CLI for the code request ID' do
146
- expect(highline_cli).to receive(:code_request_id).and_return(123)
153
+ expect(highline_cli).to receive(:code_request_id).and_return(Faker::Number.number)
147
154
  subject.send(:pr_id)
148
155
  end
149
156
 
150
157
  it 'should equal an integer' do
151
- expect(highline_cli).to receive(:code_request_id).and_return(123)
152
- expect(subject.send(:pr_id)).to eq(123)
158
+ pr_id = Faker::Number.number
159
+ expect(highline_cli).to receive(:code_request_id).and_return(pr_id)
160
+ expect(subject.send(:pr_id)).to eq(pr_id)
153
161
  end
154
162
  end
155
163
 
@@ -171,7 +179,7 @@ describe GitHelper::GitHubPullRequest do
171
179
  expect(subject.send(:merge_method)).to be_a(String)
172
180
  end
173
181
 
174
- context "if there's only one item" do
182
+ context 'if theres only one item' do
175
183
  let(:project) { double(:project, allow_merge_commit: true, allow_squash_merge: false, allow_rebase_merge: false) }
176
184
 
177
185
  it 'should not ask the CLI anything' do
@@ -230,7 +238,7 @@ describe GitHelper::GitHubPullRequest do
230
238
 
231
239
  describe '#existing_pr' do
232
240
  it 'should call the octokit client' do
233
- allow(highline_cli).to receive(:code_request_id).and_return(123)
241
+ allow(highline_cli).to receive(:code_request_id).and_return(Faker::Number.number)
234
242
  expect(octokit_client_client).to receive(:pull_request).and_return(:pull_request)
235
243
  subject.send(:existing_pr)
236
244
  end