git_helper 3.0.1 → 3.2.1

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