git_helper 3.6.1 → 3.6.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +44 -41
- data/Guardfile +2 -2
- data/README.md +21 -25
- data/lib/git_helper/git_config_reader.rb +1 -1
- data/lib/git_helper/local_code.rb +4 -4
- data/lib/git_helper/merge_request.rb +5 -10
- data/lib/git_helper/setup.rb +7 -8
- data/lib/git_helper/version.rb +1 -1
- data/lib/git_helper.rb +1 -1
- data/renovate.json +6 -0
- metadata +7 -36
- data/spec/git_helper/change_remote_spec.rb +0 -176
- data/spec/git_helper/checkout_default_spec.rb +0 -21
- data/spec/git_helper/clean_branches_spec.rb +0 -21
- data/spec/git_helper/code_request_spec.rb +0 -265
- data/spec/git_helper/empty_commit_spec.rb +0 -21
- data/spec/git_helper/forget_local_commits_spec.rb +0 -21
- data/spec/git_helper/git_config_reader_spec.rb +0 -90
- data/spec/git_helper/github_client_spec.rb +0 -131
- data/spec/git_helper/gitlab_client_spec.rb +0 -144
- data/spec/git_helper/local_code_spec.rb +0 -270
- data/spec/git_helper/merge_request_spec.rb +0 -278
- data/spec/git_helper/new_branch_spec.rb +0 -47
- data/spec/git_helper/pull_request_spec.rb +0 -255
- data/spec/git_helper/setup_spec.rb +0 -183
- data/spec/spec_helper.rb +0 -50
@@ -1,270 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'git_helper'
|
5
|
-
|
6
|
-
describe GitHelper::LocalCode do
|
7
|
-
let(:response) { double(:response, readline: true, to_i: 5) }
|
8
|
-
let(:local_codeent) { double(:local_code, ask: response) }
|
9
|
-
let(:project_name) { Faker::Lorem.word }
|
10
|
-
let(:owner) { Faker::Name.first_name }
|
11
|
-
let(:ssh_remote) { "origin\tgit@github.com:#{owner}/#{project_name}.git (fetch)" }
|
12
|
-
let(:https_remote) { "origin\thttps://github.com/#{owner}/#{project_name}.git (fetch)" }
|
13
|
-
|
14
|
-
let(:github_remotes) do
|
15
|
-
[
|
16
|
-
"origin\tgit@github.com:#{owner}/#{project_name}.git (fetch)",
|
17
|
-
"origin\thttps://github.com/#{owner}/#{project_name}.git (fetch)"
|
18
|
-
]
|
19
|
-
end
|
20
|
-
|
21
|
-
let(:gitlab_remotes) do
|
22
|
-
[
|
23
|
-
"origin\tgit@gitlab.com:#{owner}/#{project_name}.git (fetch)",
|
24
|
-
"origin\thttps://gitlab.com/#{owner}/#{project_name}.git (fetch)"
|
25
|
-
]
|
26
|
-
end
|
27
|
-
|
28
|
-
subject { GitHelper::LocalCode.new }
|
29
|
-
|
30
|
-
before do
|
31
|
-
allow(subject).to receive(:system).and_return(nil)
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#checkout_default' do
|
35
|
-
it 'should make a system call' do
|
36
|
-
expect(subject).to receive(:system)
|
37
|
-
subject.checkout_default
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '#forget_local_commits' do
|
42
|
-
it 'should make a system call' do
|
43
|
-
expect(subject).to receive(:system).exactly(2).times
|
44
|
-
subject.forget_local_commits
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should return nil' do
|
48
|
-
expect(subject.forget_local_commits).to eq(nil)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe '#empty_commit' do
|
53
|
-
it 'should make a system call' do
|
54
|
-
expect(subject).to receive(:system)
|
55
|
-
subject.empty_commit
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe '#clean_branches' do
|
60
|
-
it 'should make a system call' do
|
61
|
-
expect(subject).to receive(:system).exactly(4).times
|
62
|
-
subject.clean_branches
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
describe '#new_branch' do
|
67
|
-
it 'should make a system call' do
|
68
|
-
expect(subject).to receive(:system).exactly(4).times
|
69
|
-
subject.new_branch(Faker::Lorem.word)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe '#change_remote' do
|
74
|
-
it 'should return a string' do
|
75
|
-
allow(subject).to receive(:`).and_return(Faker::Lorem.word)
|
76
|
-
expect(subject.change_remote(Faker::Lorem.word, Faker::Internet.url)).to be_a(String)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe '#remotes' do
|
81
|
-
it 'should return an array of strings' do
|
82
|
-
expect(subject.remotes).to be_a(Array)
|
83
|
-
expect(subject.remotes.first).to be_a(String)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe '#remote_name' do
|
88
|
-
it 'should be a string' do
|
89
|
-
expect(subject.remote_name(ssh_remote)).to be_a(String)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe '#ssh_remote' do
|
94
|
-
it 'should come out true if ssh' do
|
95
|
-
expect(subject.ssh_remote?(ssh_remote)).to eq(true)
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'should come out false if https' do
|
99
|
-
expect(subject.ssh_remote?(https_remote)).to eq(false)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
describe '#https_remote' do
|
104
|
-
it 'should come out false if ssh' do
|
105
|
-
expect(subject.https_remote?(ssh_remote)).to eq(false)
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'should come out true if https' do
|
109
|
-
expect(subject.https_remote?(https_remote)).to eq(true)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe '#remote_project' do
|
114
|
-
it 'should return just the plain project if ssh' do
|
115
|
-
expect(subject.remote_project(ssh_remote)).to eq(project_name)
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'should return just the plain project if https' do
|
119
|
-
expect(subject.remote_project(https_remote)).to eq(project_name)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
describe '#remote_source' do
|
124
|
-
it 'should return just the plain project if ssh' do
|
125
|
-
expect(subject.remote_source(ssh_remote)).to eq('github.com')
|
126
|
-
end
|
127
|
-
|
128
|
-
it 'should return just the plain project if https' do
|
129
|
-
expect(subject.remote_source(https_remote)).to eq('github.com')
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
describe '#github_repo' do
|
134
|
-
it 'should return true if github' do
|
135
|
-
allow(subject).to receive(:remotes).and_return(github_remotes)
|
136
|
-
expect(subject.github_repo?).to eq(true)
|
137
|
-
end
|
138
|
-
|
139
|
-
it 'should return false if gitlab' do
|
140
|
-
allow(subject).to receive(:remotes).and_return(gitlab_remotes)
|
141
|
-
expect(subject.github_repo?).to eq(false)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
describe '#gitlab_project' do
|
146
|
-
it 'should return true if gitlab' do
|
147
|
-
allow(subject).to receive(:remotes).and_return(gitlab_remotes)
|
148
|
-
expect(subject.gitlab_project?).to eq(true)
|
149
|
-
end
|
150
|
-
|
151
|
-
it 'should return false if github' do
|
152
|
-
allow(subject).to receive(:remotes).and_return(github_remotes)
|
153
|
-
expect(subject.gitlab_project?).to eq(false)
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
describe '#project_name' do
|
158
|
-
it 'should return a string' do
|
159
|
-
expect(subject.project_name).to be_a(String)
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'should equal this project name' do
|
163
|
-
allow_any_instance_of(String).to receive(:scan).and_return([["#{owner}/#{project_name}"]])
|
164
|
-
expect(subject.project_name).to eq("#{owner}/#{project_name}")
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
describe '#branch' do
|
169
|
-
it 'should return a string' do
|
170
|
-
expect(subject.branch).to be_a(String)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
describe '#default_branch' do
|
175
|
-
it 'should return a string' do
|
176
|
-
expect(subject.default_branch).to be_a(String)
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
describe '#template_options' do
|
181
|
-
let(:template_identifiers) do
|
182
|
-
{
|
183
|
-
template_directory: '.github',
|
184
|
-
nested_directory_name: 'PULL_REQUEST_TEMPLATE',
|
185
|
-
non_nested_file_name: 'pull_request_template'
|
186
|
-
}
|
187
|
-
end
|
188
|
-
|
189
|
-
it 'should return an array' do
|
190
|
-
expect(subject.template_options(template_identifiers)).to be_a(Array)
|
191
|
-
end
|
192
|
-
|
193
|
-
it 'should call Dir.glob and File.join' do
|
194
|
-
expect(Dir).to receive(:glob).and_return(['.github/pull_request_template.md']).at_least(:once)
|
195
|
-
expect(File).to receive(:join).at_least(:once)
|
196
|
-
subject.template_options(template_identifiers)
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
describe '#read_template' do
|
201
|
-
it 'should call File.open' do
|
202
|
-
expect(File).to receive(:open).and_return(double(read: true))
|
203
|
-
subject.read_template('.gitignore')
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
describe '#generate_title' do
|
208
|
-
it 'should return a title based on the branch' do
|
209
|
-
prefix = Faker::Lorem.word
|
210
|
-
word1 = Faker::Lorem.word
|
211
|
-
word2 = Faker::Lorem.word
|
212
|
-
description = [word1, word2].join('-')
|
213
|
-
branch = "#{prefix}-123-#{description}"
|
214
|
-
expect(subject.generate_title(branch)).to eq("#{prefix.upcase}-123 #{[word1.capitalize, word2].join(' ')}")
|
215
|
-
end
|
216
|
-
|
217
|
-
it 'should return a title based on the branch' do
|
218
|
-
prefix = Faker::Lorem.word
|
219
|
-
word1 = Faker::Lorem.word
|
220
|
-
word2 = Faker::Lorem.word
|
221
|
-
description = [word1, word2].join('_')
|
222
|
-
branch = "#{prefix}_123_#{description}"
|
223
|
-
expect(subject.generate_title(branch)).to eq("#{prefix.upcase}-123 #{[word1.capitalize, word2].join(' ')}")
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'should return a title based on the branch' do
|
227
|
-
prefix = Faker::Lorem.word
|
228
|
-
word1 = Faker::Lorem.word
|
229
|
-
word2 = Faker::Lorem.word
|
230
|
-
description = [word1, word2].join('_')
|
231
|
-
branch = "#{prefix}-123_#{description}"
|
232
|
-
expect(subject.generate_title(branch)).to eq("#{prefix.upcase}-123 #{[word1.capitalize, word2].join(' ')}")
|
233
|
-
end
|
234
|
-
|
235
|
-
it 'should return a title based on the branch' do
|
236
|
-
word1 = Faker::Lorem.word
|
237
|
-
word2 = Faker::Lorem.word
|
238
|
-
branch = [word1, word2].join('_')
|
239
|
-
expect(subject.generate_title(branch)).to eq([word1.capitalize, word2].join(' '))
|
240
|
-
end
|
241
|
-
|
242
|
-
it 'should return a title based on the branch' do
|
243
|
-
word1 = Faker::Lorem.word
|
244
|
-
word2 = Faker::Lorem.word
|
245
|
-
branch = [word1, word2].join('-')
|
246
|
-
expect(subject.generate_title(branch)).to eq([word1.capitalize, word2].join(' '))
|
247
|
-
end
|
248
|
-
|
249
|
-
it 'should return a title based on the branch' do
|
250
|
-
branch = Faker::Lorem.word
|
251
|
-
expect(subject.generate_title(branch)).to eq(branch.capitalize)
|
252
|
-
end
|
253
|
-
|
254
|
-
it 'should return a title based on the branch' do
|
255
|
-
word1 = Faker::Lorem.word
|
256
|
-
word2 = Faker::Lorem.word
|
257
|
-
word3 = Faker::Lorem.word
|
258
|
-
branch = [word1, word2, word3].join('_')
|
259
|
-
expect(subject.generate_title(branch)).to eq([word1.capitalize, word2, word3].join(' '))
|
260
|
-
end
|
261
|
-
|
262
|
-
it 'should return a title based on the branch' do
|
263
|
-
word1 = Faker::Lorem.word
|
264
|
-
word2 = Faker::Lorem.word
|
265
|
-
word3 = Faker::Lorem.word
|
266
|
-
branch = [word1, word2, word3].join('-')
|
267
|
-
expect(subject.generate_title(branch)).to eq([word1.capitalize, word2, word3].join(' '))
|
268
|
-
end
|
269
|
-
end
|
270
|
-
end
|
@@ -1,278 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'git_helper'
|
5
|
-
|
6
|
-
describe GitHelper::GitLabMergeRequest do
|
7
|
-
let(:local_code) { double(:local_code, read_template: Faker::Lorem.word) }
|
8
|
-
let(:highline_wrapper) { double(:highline_wrapper) }
|
9
|
-
let(:gitlab_client) { double(:gitlab_client) }
|
10
|
-
|
11
|
-
let(:merge_request) do
|
12
|
-
double(:merge_request,
|
13
|
-
message: Faker::Lorem.sentence,
|
14
|
-
diff_refs: { base_sha: Faker::Lorem.word, head_sha: Faker::Lorem.word },
|
15
|
-
web_url: Faker::Internet.url,
|
16
|
-
merge_commit_sha: Faker::Internet.password)
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:options) do
|
20
|
-
{
|
21
|
-
local_project: Faker::Lorem.word,
|
22
|
-
local_branch: Faker::Lorem.word,
|
23
|
-
local_code: local_code,
|
24
|
-
highline: highline_wrapper
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
subject { described_class.new(options) }
|
29
|
-
|
30
|
-
before do
|
31
|
-
allow(GitHelper::GitLabClient).to receive(:new).and_return(gitlab_client)
|
32
|
-
allow(subject).to receive(:puts)
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#create' do
|
36
|
-
it 'should call the gitlab client to create' do
|
37
|
-
allow(subject).to receive(:squash_merge_request).and_return(true)
|
38
|
-
allow(subject).to receive(:remove_source_branch).and_return(false)
|
39
|
-
allow(subject).to receive(:new_mr_body).and_return('')
|
40
|
-
expect(gitlab_client).to receive(:create_merge_request).and_return(merge_request)
|
41
|
-
subject.create({ base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word })
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'should call various other methods' do
|
45
|
-
expect(subject).to receive(:squash_merge_request).and_return(true)
|
46
|
-
expect(subject).to receive(:remove_source_branch).and_return(false)
|
47
|
-
expect(subject).to receive(:new_mr_body).and_return('')
|
48
|
-
allow(gitlab_client).to receive(:create_merge_request).and_return(merge_request)
|
49
|
-
subject.create({ base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word })
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'should catch the raised error if the creation does not work' do
|
53
|
-
allow(subject).to receive(:squash_merge_request).and_return(true)
|
54
|
-
allow(subject).to receive(:remove_source_branch).and_return(false)
|
55
|
-
allow(subject).to receive(:new_mr_body).and_return('')
|
56
|
-
allow(gitlab_client).to receive(:create_merge_request).and_raise(StandardError)
|
57
|
-
expect(subject.create({ base_branch: Faker::Lorem.word, new_title: Faker::Lorem.word })).to eq(nil)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe '#merge' do
|
62
|
-
it 'should call the gitlab client to merge' do
|
63
|
-
allow(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title'))
|
64
|
-
allow(subject).to receive(:mr_id).and_return(Faker::Number.number)
|
65
|
-
expect(gitlab_client).to receive(:accept_merge_request).and_return(merge_request)
|
66
|
-
subject.merge
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'should call various other methods' do
|
70
|
-
expect(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title')).at_least(:once)
|
71
|
-
expect(subject).to receive(:mr_id).and_return(Faker::Number.number).at_least(:once)
|
72
|
-
allow(gitlab_client).to receive(:accept_merge_request).and_return(merge_request)
|
73
|
-
subject.merge
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'should catch the raised error if the merge does not work' do
|
77
|
-
allow(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title'))
|
78
|
-
allow(subject).to receive(:mr_id).and_return(Faker::Number.number)
|
79
|
-
allow(gitlab_client).to receive(:accept_merge_request).and_raise(StandardError)
|
80
|
-
expect(subject.merge).to eq(nil)
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'should try to merge multiple times if the first merge errors' do
|
84
|
-
allow(subject).to receive(:existing_mr).and_return(double(should_remove_source_branch: true, squash: false, title: 'title'))
|
85
|
-
allow(subject).to receive(:mr_id).and_return(Faker::Number.number)
|
86
|
-
expect(gitlab_client).to receive(:accept_merge_request).and_return(double(merge_commit_sha: nil, merge_error: Faker::Lorem.word, message: Faker::Lorem.sentence)).exactly(2).times
|
87
|
-
expect(subject.merge).to eq(nil)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe '#new_mr_body' do
|
92
|
-
it 'should call the local code if the template to apply exists' do
|
93
|
-
allow(subject).to receive(:template_name_to_apply).and_return('')
|
94
|
-
expect(local_code).to receive(:read_template)
|
95
|
-
subject.send(:new_mr_body)
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'should not call the local code if the template is nil' do
|
99
|
-
allow(subject).to receive(:template_name_to_apply).and_return(nil)
|
100
|
-
expect(local_code).not_to receive(:read_template)
|
101
|
-
subject.send(:new_mr_body)
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'should return an empty string if the template is nil' do
|
105
|
-
allow(subject).to receive(:template_name_to_apply).and_return(nil)
|
106
|
-
expect(subject.send(:new_mr_body)).to eq('')
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
describe '#template_name_to_apply' do
|
111
|
-
context 'if MR template options are empty' do
|
112
|
-
it 'should return nil' do
|
113
|
-
allow(subject).to receive(:mr_template_options).and_return([])
|
114
|
-
expect(subject.send(:template_name_to_apply)).to eq(nil)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
context 'if there is one template option' do
|
119
|
-
let(:template) { Faker::Lorem.word }
|
120
|
-
|
121
|
-
it 'should call the CLI to ask about a single template' do
|
122
|
-
allow(subject).to receive(:mr_template_options).and_return([template])
|
123
|
-
expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
|
124
|
-
subject.send(:template_name_to_apply)
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'should return the single template if the user says yes' do
|
128
|
-
allow(subject).to receive(:mr_template_options).and_return([template])
|
129
|
-
allow(highline_wrapper).to receive(:ask_yes_no).and_return(true)
|
130
|
-
expect(subject.send(:template_name_to_apply)).to eq(template)
|
131
|
-
end
|
132
|
-
|
133
|
-
it 'should return nil if the user says no' do
|
134
|
-
allow(subject).to receive(:mr_template_options).and_return([template])
|
135
|
-
allow(highline_wrapper).to receive(:ask_yes_no).and_return(false)
|
136
|
-
expect(subject.send(:template_name_to_apply)).to eq(nil)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context 'if there are multiple template options' do
|
141
|
-
let(:template1) { Faker::Lorem.word }
|
142
|
-
let(:template2) { Faker::Lorem.word }
|
143
|
-
|
144
|
-
it 'should call the CLI to ask which of multiple templates to apply' do
|
145
|
-
allow(subject).to receive(:mr_template_options).and_return([template1, template2])
|
146
|
-
expect(highline_wrapper).to receive(:ask_options).and_return(template1)
|
147
|
-
subject.send(:template_name_to_apply)
|
148
|
-
end
|
149
|
-
|
150
|
-
it 'should return the answer template if the user says yes' do
|
151
|
-
allow(subject).to receive(:mr_template_options).and_return([template1, template2])
|
152
|
-
allow(highline_wrapper).to receive(:ask_options).and_return(template1)
|
153
|
-
expect(subject.send(:template_name_to_apply)).to eq(template1)
|
154
|
-
end
|
155
|
-
|
156
|
-
it 'should return nil if the user says no' do
|
157
|
-
allow(subject).to receive(:mr_template_options).and_return([template1, template2])
|
158
|
-
allow(highline_wrapper).to receive(:ask_options).and_return('None')
|
159
|
-
expect(subject.send(:template_name_to_apply)).to eq(nil)
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
describe '#mr_template_options' do
|
165
|
-
it 'should call the local code' do
|
166
|
-
expect(local_code).to receive(:template_options)
|
167
|
-
subject.send(:mr_template_options)
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
describe '#mr_id' do
|
172
|
-
it 'should ask the CLI for the code request ID' do
|
173
|
-
expect(highline_wrapper).to receive(:ask).and_return(Faker::Number.number)
|
174
|
-
subject.send(:mr_id)
|
175
|
-
end
|
176
|
-
|
177
|
-
it 'should equal an integer' do
|
178
|
-
pr_id = Faker::Number.number
|
179
|
-
expect(highline_wrapper).to receive(:ask).and_return(pr_id)
|
180
|
-
expect(subject.send(:mr_id)).to eq(pr_id)
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
describe '#squash_merge_request' do
|
185
|
-
let(:existing_project) { double(squash_option: 'default_off') }
|
186
|
-
|
187
|
-
it 'should return true if the squash is set to always on the project' do
|
188
|
-
allow(subject).to receive(:existing_project).and_return(existing_project)
|
189
|
-
allow(existing_project).to receive(:squash_option).and_return('always')
|
190
|
-
expect(highline_wrapper).not_to receive(:ask_yes_no)
|
191
|
-
expect(subject.send(:squash_merge_request)).to eq(true)
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'should return true if the squash is set to default_on on the project' do
|
195
|
-
allow(subject).to receive(:existing_project).and_return(existing_project)
|
196
|
-
allow(existing_project).to receive(:squash_option).and_return('default_on')
|
197
|
-
expect(highline_wrapper).not_to receive(:ask_yes_no)
|
198
|
-
expect(subject.send(:squash_merge_request)).to eq(true)
|
199
|
-
end
|
200
|
-
|
201
|
-
it 'should return false if the squash is set to never on the project' do
|
202
|
-
allow(subject).to receive(:existing_project).and_return(existing_project)
|
203
|
-
allow(existing_project).to receive(:squash_option).and_return('never')
|
204
|
-
expect(highline_wrapper).not_to receive(:ask_yes_no)
|
205
|
-
expect(subject.send(:squash_merge_request)).to eq(false)
|
206
|
-
end
|
207
|
-
|
208
|
-
it 'should ask the user for their response to the squash question' do
|
209
|
-
allow(subject).to receive(:existing_project).and_return(existing_project)
|
210
|
-
allow(existing_project).to receive(:squash_option).and_return(nil)
|
211
|
-
expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
|
212
|
-
subject.send(:squash_merge_request)
|
213
|
-
end
|
214
|
-
|
215
|
-
it 'should be a boolean' do
|
216
|
-
allow(subject).to receive(:existing_project).and_return(existing_project)
|
217
|
-
allow(existing_project).to receive(:squash_option).and_return(nil)
|
218
|
-
expect(highline_wrapper).to receive(:ask_yes_no).and_return(false)
|
219
|
-
expect([true, false]).to include(subject.send(:squash_merge_request))
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
describe '#remove_source_branch' do
|
224
|
-
before do
|
225
|
-
allow(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: nil))
|
226
|
-
end
|
227
|
-
|
228
|
-
context 'when the existing project has no setting' do
|
229
|
-
it 'should ask the CLI for the code request ID' do
|
230
|
-
expect(highline_wrapper).to receive(:ask_yes_no).and_return(true)
|
231
|
-
subject.send(:remove_source_branch)
|
232
|
-
end
|
233
|
-
|
234
|
-
it 'should be a boolean' do
|
235
|
-
allow(highline_wrapper).to receive(:ask_yes_no).and_return(false)
|
236
|
-
expect([true, false]).to include(subject.send(:remove_source_branch))
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
it 'should ask the existing project' do
|
241
|
-
expect(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: true))
|
242
|
-
subject.send(:remove_source_branch)
|
243
|
-
end
|
244
|
-
|
245
|
-
it 'should return the existing projects setting if it exists' do
|
246
|
-
allow(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: true))
|
247
|
-
expect(subject.send(:remove_source_branch)).to eq(true)
|
248
|
-
end
|
249
|
-
|
250
|
-
it 'should return the existing projects setting if it exists' do
|
251
|
-
allow(subject).to receive(:existing_project).and_return(double(remove_source_branch_after_merge: false))
|
252
|
-
allow(highline_wrapper).to receive(:ask_yes_no).and_return(true)
|
253
|
-
expect(subject.send(:remove_source_branch)).to eq(true)
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
describe '#existing_project' do
|
258
|
-
it 'should call the gitlab client' do
|
259
|
-
expect(gitlab_client).to receive(:project).and_return(:project)
|
260
|
-
subject.send(:existing_project)
|
261
|
-
end
|
262
|
-
end
|
263
|
-
|
264
|
-
describe '#existing_mr' do
|
265
|
-
it 'should call the gitlab client' do
|
266
|
-
allow(highline_wrapper).to receive(:ask).and_return(Faker::Number.number)
|
267
|
-
expect(gitlab_client).to receive(:merge_request).and_return(:merge_request)
|
268
|
-
subject.send(:existing_mr)
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
|
-
describe '#gitlab_client' do
|
273
|
-
it 'should call the gitlab client' do
|
274
|
-
expect(GitHelper::GitLabClient).to receive(:new).and_return(gitlab_client)
|
275
|
-
subject.send(:gitlab_client)
|
276
|
-
end
|
277
|
-
end
|
278
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'git_helper'
|
5
|
-
|
6
|
-
describe GitHelper::NewBranch do
|
7
|
-
let(:new_branch_name) { 'new-branch-name' }
|
8
|
-
let(:local_code) { double(:local_code, new_branch: :commit) }
|
9
|
-
let(:highline) { double(:highline_wrapper, ask: new_branch_name) }
|
10
|
-
|
11
|
-
subject { GitHelper::NewBranch.new }
|
12
|
-
|
13
|
-
before do
|
14
|
-
allow(GitHelper::LocalCode).to receive(:new).and_return(local_code)
|
15
|
-
allow(HighlineWrapper).to receive(:new).and_return(highline)
|
16
|
-
allow(subject).to receive(:puts)
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'should call GitHelper::LocalCode' do
|
20
|
-
expect(GitHelper::LocalCode).to receive(:new).and_return(local_code)
|
21
|
-
subject.execute
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'should call the new_branch method from the local code class' do
|
25
|
-
expect(local_code).to receive(:new_branch)
|
26
|
-
subject.execute
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'when no branch name is passed in' do
|
30
|
-
it 'should call the highline client' do
|
31
|
-
expect(HighlineWrapper).to receive(:new).and_return(highline)
|
32
|
-
subject.execute
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should ask the highline client what the new branch name should be' do
|
36
|
-
expect(highline).to receive(:ask)
|
37
|
-
subject.execute
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'when there is a branch name passed in' do
|
42
|
-
it 'should not create a highline_wrapper client' do
|
43
|
-
expect(HighlineWrapper).not_to receive(:new)
|
44
|
-
subject.execute(new_branch_name)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|