git_helper 3.0.0 → 3.2.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.
@@ -2,13 +2,14 @@ require 'spec_helper'
2
2
  require 'git_helper'
3
3
 
4
4
  describe GitHelper::GitConfigReader do
5
- let(:github_token) { '1234ASDF1234ASDF' }
6
- let(:gitlab_token) { 'ASDF123ASDF1234' }
5
+ let(:github_token) { Faker::Internet.password(max_length: 10) }
6
+ let(:gitlab_token) { Faker::Internet.password(max_length: 10) }
7
+
7
8
  let(:config_file) {
8
9
  {
9
- github_user: 'github-user-name',
10
+ github_user: Faker::Internet.username,
10
11
  github_token: github_token,
11
- gitlab_user: 'gitlab-user-name',
12
+ gitlab_user: Faker::Internet.username,
12
13
  gitlab_token: gitlab_token
13
14
  }
14
15
  }
@@ -48,13 +49,14 @@ describe GitHelper::GitConfigReader do
48
49
 
49
50
  describe '#git_config_file_path' do
50
51
  it 'should look in the current directory' do
51
- expect(Dir).to receive(:pwd).and_return('/Users/firstnamelastname/path/to/git_helper')
52
+ expect(Dir).to receive(:pwd).and_return("/Users/#{Faker::Name.first_name}/#{Faker::Lorem.word}")
52
53
  subject.send(:git_config_file_path)
53
54
  end
54
55
 
55
56
  it 'should return the base path with the git config file at the end' do
56
- allow(Dir).to receive(:pwd).and_return('/Users/firstnamelastname/path/to/git_helper')
57
- expect(subject.send(:git_config_file_path)).to eq('/Users/firstnamelastname/.git_helper/config.yml')
57
+ user = Faker::Name.first_name
58
+ allow(Dir).to receive(:pwd).and_return("/Users/#{user}/#{Faker::Lorem.word}")
59
+ expect(subject.send(:git_config_file_path)).to eq("/Users/#{user}/.git_helper/config.yml")
58
60
  end
59
61
  end
60
62
  end
@@ -12,7 +12,7 @@ describe GitHelper::HighlineCli do
12
12
  end
13
13
 
14
14
  describe '#new_branch_name' do
15
- it "should ask the subject's ask method" do
15
+ it 'should ask the subjects ask method' do
16
16
  expect(subject).to receive(:ask).with('New branch name?')
17
17
  subject.new_branch_name
18
18
  end
@@ -23,34 +23,34 @@ describe GitHelper::HighlineCli do
23
23
  end
24
24
 
25
25
  describe '#process_directory_remotes' do
26
- it "should ask the subject's ask method" do
26
+ it 'should ask the subjects ask method' do
27
27
  expect(subject).to receive(:ask).and_return('y')
28
- subject.process_directory_remotes?('directory')
28
+ subject.process_directory_remotes?(Faker::Lorem.word)
29
29
  end
30
30
 
31
31
  it 'should be a boolean at the end' do
32
32
  allow(subject).to receive(:ask).and_return('y')
33
- expect([true, false]).to include(subject.process_directory_remotes?('directory'))
33
+ expect([true, false]).to include(subject.process_directory_remotes?(Faker::Lorem.word))
34
34
  end
35
35
 
36
36
  it 'should come out as a true boolean if somebody responds y' do
37
37
  allow(subject).to receive(:ask).and_return('y')
38
- expect(subject.process_directory_remotes?('directory')).to eq(true)
38
+ expect(subject.process_directory_remotes?(Faker::Lorem.word)).to eq(true)
39
39
  end
40
40
 
41
41
  it 'should come out as a false boolean if somebody responds n' do
42
42
  allow(subject).to receive(:ask).and_return('n')
43
- expect(subject.process_directory_remotes?('directory')).to eq(false)
43
+ expect(subject.process_directory_remotes?(Faker::Lorem.word)).to eq(false)
44
44
  end
45
45
 
46
46
  it 'should come out as true if somebody presses enter' do
47
47
  allow(subject).to receive(:ask).and_return('')
48
- expect(subject.accept_autogenerated_title?('directory')).to eq(true)
48
+ expect(subject.accept_autogenerated_title?(Faker::Lorem.word)).to eq(true)
49
49
  end
50
50
  end
51
51
 
52
52
  describe '#conflicting_remote_clarification' do
53
- it "should ask the subject's ask method" do
53
+ it 'should ask the subjects ask method' do
54
54
  expect(subject).to receive(:ask).with('Found git remotes for both GitHub and GitLab. Would you like to proceed with GitLab or GitHub? (github/gitlab)').and_return('gitlab')
55
55
  subject.conflicting_remote_clarification
56
56
  end
@@ -61,7 +61,7 @@ describe GitHelper::HighlineCli do
61
61
  end
62
62
 
63
63
  describe '#title' do
64
- it "should ask the subject's ask method" do
64
+ it 'should ask the subjects ask method' do
65
65
  expect(subject).to receive(:ask).with('Title?')
66
66
  subject.title
67
67
  end
@@ -72,7 +72,7 @@ describe GitHelper::HighlineCli do
72
72
  end
73
73
 
74
74
  describe '#base_branch' do
75
- it "should ask the subject's ask method" do
75
+ it 'should ask the subjects ask method' do
76
76
  expect(subject).to receive(:ask).with('Base branch?')
77
77
  subject.base_branch
78
78
  end
@@ -83,92 +83,94 @@ describe GitHelper::HighlineCli do
83
83
  end
84
84
 
85
85
  describe '#code_request_id' do
86
- it "should ask the subject's ask method" do
87
- expect(subject).to receive(:ask).with('Example Request ID?')
88
- subject.code_request_id('Example')
86
+ let(:phrase) { Faker::Lorem.sentence }
87
+
88
+ it 'should ask the subjects ask method' do
89
+ expect(subject).to receive(:ask).with("#{phrase} Request ID?")
90
+ subject.code_request_id(phrase)
89
91
  end
90
92
 
91
93
  it 'should come out a string' do
92
- expect(subject.code_request_id('Example')).to be_a(String)
94
+ expect(subject.code_request_id(phrase)).to be_a(String)
93
95
  end
94
96
  end
95
97
 
96
98
  describe '#accept_autogenerated_title' do
97
- it "should ask the subject's ask method" do
99
+ it 'should ask the subjects ask method' do
98
100
  expect(subject).to receive(:ask).and_return('y')
99
- subject.accept_autogenerated_title?('Title Example')
101
+ subject.accept_autogenerated_title?(Faker::Lorem.sentence)
100
102
  end
101
103
 
102
104
  it 'should be a boolean at the end' do
103
105
  allow(subject).to receive(:ask).and_return('y')
104
- expect([true, false]).to include(subject.accept_autogenerated_title?('Title Example'))
106
+ expect([true, false]).to include(subject.accept_autogenerated_title?(Faker::Lorem.sentence))
105
107
  end
106
108
 
107
109
  it 'should come out as a true boolean if somebody responds y' do
108
110
  allow(subject).to receive(:ask).and_return('y')
109
- expect(subject.accept_autogenerated_title?('Title Example')).to eq(true)
111
+ expect(subject.accept_autogenerated_title?(Faker::Lorem.sentence)).to eq(true)
110
112
  end
111
113
 
112
114
  it 'should come out as a true boolean if somebody responds n' do
113
115
  allow(subject).to receive(:ask).and_return('n')
114
- expect(subject.accept_autogenerated_title?('Title Example')).to eq(false)
116
+ expect(subject.accept_autogenerated_title?(Faker::Lorem.sentence)).to eq(false)
115
117
  end
116
118
 
117
119
  it 'should come out as a true boolean if somebody responds yes' do
118
120
  allow(subject).to receive(:ask).and_return('yes')
119
- expect(subject.accept_autogenerated_title?('Title Example')).to eq(true)
121
+ expect(subject.accept_autogenerated_title?(Faker::Lorem.sentence)).to eq(true)
120
122
  end
121
123
 
122
124
  it 'should come out as a false boolean if somebody responds no' do
123
125
  allow(subject).to receive(:ask).and_return('no')
124
- expect(subject.accept_autogenerated_title?('Title Example')).to eq(false)
126
+ expect(subject.accept_autogenerated_title?(Faker::Lorem.sentence)).to eq(false)
125
127
  end
126
128
 
127
129
  it 'should come out as true if somebody presses enter' do
128
130
  allow(subject).to receive(:ask).and_return('')
129
- expect(subject.accept_autogenerated_title?('Title Example')).to eq(true)
131
+ expect(subject.accept_autogenerated_title?(Faker::Lorem.sentence)).to eq(true)
130
132
  end
131
133
  end
132
134
 
133
135
  describe '#base_branch_default' do
134
- it "should ask the subject's ask method" do
136
+ it 'should ask the subjects ask method' do
135
137
  expect(subject).to receive(:ask).and_return('y')
136
- subject.base_branch_default?('default_branch')
138
+ subject.base_branch_default?(Faker::Lorem.word)
137
139
  end
138
140
 
139
141
  it 'should be a boolean at the end' do
140
142
  allow(subject).to receive(:ask).and_return('y')
141
- expect([true, false]).to include(subject.base_branch_default?('default_branch'))
143
+ expect([true, false]).to include(subject.base_branch_default?(Faker::Lorem.word))
142
144
  end
143
145
 
144
146
  it 'should come out as a true boolean if somebody responds y' do
145
147
  allow(subject).to receive(:ask).and_return('y')
146
- expect(subject.base_branch_default?('default_branch')).to eq(true)
148
+ expect(subject.base_branch_default?(Faker::Lorem.word)).to eq(true)
147
149
  end
148
150
 
149
151
  it 'should come out as a true boolean if somebody responds n' do
150
152
  allow(subject).to receive(:ask).and_return('n')
151
- expect(subject.base_branch_default?('default_branch')).to eq(false)
153
+ expect(subject.base_branch_default?(Faker::Lorem.word)).to eq(false)
152
154
  end
153
155
 
154
156
  it 'should come out as a true boolean if somebody responds yes' do
155
157
  allow(subject).to receive(:ask).and_return('yes')
156
- expect(subject.base_branch_default?('default_branch')).to eq(true)
158
+ expect(subject.base_branch_default?(Faker::Lorem.word)).to eq(true)
157
159
  end
158
160
 
159
161
  it 'should come out as a false boolean if somebody responds no' do
160
162
  allow(subject).to receive(:ask).and_return('no')
161
- expect(subject.base_branch_default?('default_branch')).to eq(false)
163
+ expect(subject.base_branch_default?(Faker::Lorem.word)).to eq(false)
162
164
  end
163
165
 
164
166
  it 'should come out as true if somebody presses enter' do
165
167
  allow(subject).to receive(:ask).and_return('')
166
- expect(subject.base_branch_default?('default_branch')).to eq(true)
168
+ expect(subject.base_branch_default?(Faker::Lorem.word)).to eq(true)
167
169
  end
168
170
  end
169
171
 
170
172
  describe '#merge_method' do
171
- it "should ask the subject's ask_options method" do
173
+ it 'should ask the subjects ask_options method' do
172
174
  expect(subject).to receive(:ask_options).and_return(3)
173
175
  subject.merge_method(['1', '2', '3'])
174
176
  end
@@ -180,7 +182,7 @@ describe GitHelper::HighlineCli do
180
182
  end
181
183
 
182
184
  describe '#template_to_apply' do
183
- it "should ask the subject's ask_options method" do
185
+ it 'should ask the subjects ask_options method' do
184
186
  expect(subject).to receive(:ask_options).and_return(3)
185
187
  subject.template_to_apply(['option1', 'option2', 'option3'], 'example type')
186
188
  end
@@ -194,22 +196,22 @@ describe GitHelper::HighlineCli do
194
196
  describe '#ask' do
195
197
  it 'should ask the highline client ask'do
196
198
  expect(highline_client).to receive(:ask)
197
- subject.send(:ask, 'prompt goes here')
199
+ subject.send(:ask, Faker::Lorem.sentence)
198
200
  end
199
201
 
200
202
  it 'should return a string' do
201
- expect(subject.send(:ask, 'prompt goes here')).to be_a(String)
203
+ expect(subject.send(:ask, Faker::Lorem.sentence)).to be_a(String)
202
204
  end
203
205
  end
204
206
 
205
207
  describe '#ask_options' do
206
208
  it 'should ask the highline client ask'do
207
209
  expect(highline_client).to receive(:ask)
208
- subject.send(:ask_options, 'prompt goes here', ['1', '2', '3'])
210
+ subject.send(:ask_options, Faker::Lorem.sentence, ['1', '2', '3'])
209
211
  end
210
212
 
211
213
  it 'should return an integer' do
212
- expect(subject.send(:ask_options, 'prompt goes here', ['1', '2', '3'])).to be_a(Integer)
214
+ expect(subject.send(:ask_options, Faker::Lorem.sentence, ['1', '2', '3'])).to be_a(Integer)
213
215
  end
214
216
  end
215
217
  end
@@ -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
 
@@ -164,6 +178,7 @@ describe GitHelper::LocalCode do
164
178
  describe '#template_options' do
165
179
  let(:template_identifiers) do
166
180
  {
181
+ template_directory: '.github',
167
182
  nested_directory_name: 'PULL_REQUEST_TEMPLATE',
168
183
  non_nested_file_name: 'pull_request_template'
169
184
  }
@@ -189,43 +204,65 @@ describe GitHelper::LocalCode do
189
204
 
190
205
  describe '#generate_title' do
191
206
  it 'should return a title based on the branch' do
192
- branch = 'jira-123-test-branch'
193
- 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(' ')}")
194
213
  end
195
214
 
196
215
  it 'should return a title based on the branch' do
197
- branch = 'jira_123_test_branch'
198
- 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(' ')}")
199
222
  end
200
223
 
201
224
  it 'should return a title based on the branch' do
202
- branch = 'jira-123_test_branch'
203
- 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(' ')}")
204
231
  end
205
232
 
206
233
  it 'should return a title based on the branch' do
207
- branch = 'test_branch'
208
- 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(' '))
209
238
  end
210
239
 
211
240
  it 'should return a title based on the branch' do
212
- branch = 'test-branch'
213
- 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(' '))
214
245
  end
215
246
 
216
247
  it 'should return a title based on the branch' do
217
- branch = 'test'
218
- expect(subject.generate_title(branch)).to eq('Test')
248
+ branch = Faker::Lorem.word
249
+ expect(subject.generate_title(branch)).to eq(branch.capitalize)
219
250
  end
220
251
 
221
252
  it 'should return a title based on the branch' do
222
- branch = 'some_other_words_in_this_test_branch'
223
- 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(' '))
224
258
  end
225
259
 
226
260
  it 'should return a title based on the branch' do
227
- branch = 'some-other-words-in-this-test-branch'
228
- 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(' '))
229
266
  end
230
267
  end
231
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,40 +116,45 @@ 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'])
122
+ allow(subject).to receive(:mr_template_options).and_return([template])
110
123
  expect(highline_cli).to receive(:apply_template?).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'])
128
+ allow(subject).to receive(:mr_template_options).and_return([template])
116
129
  allow(highline_cli).to receive(:apply_template?).and_return(true)
117
- expect(subject.send(:template_name_to_apply)).to eq('template1')
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'])
134
+ allow(subject).to receive(:mr_template_options).and_return([template])
122
135
  allow(highline_cli).to receive(:apply_template?).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(:template_to_apply).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(:template_to_apply).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'])
157
+ allow(subject).to receive(:mr_template_options).and_return([template1, template2])
142
158
  allow(highline_cli).to receive(:template_to_apply).and_return('None')
143
159
  expect(subject.send(:template_name_to_apply)).to eq(nil)
144
160
  end
@@ -154,13 +170,14 @@ 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(:code_request_id).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(:code_request_id).and_return(pr_id)
180
+ expect(subject.send(:mr_id)).to eq(pr_id)
164
181
  end
165
182
  end
166
183
 
@@ -198,12 +215,12 @@ 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
225
  allow(highline_cli).to receive(:remove_source_branch?).and_return(true)
209
226
  expect(subject.send(:remove_source_branch)).to eq(true)
@@ -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(:code_request_id).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