Extra tests inside shared_examples:
Feedback from: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4093#note_12321421 The advantage of this is that tests are less about logic and more straightforward, thus could be easier to reason about each individual tests. The disadvantage of this is that we write more duplicated codes and once something changed we might need to change all places and it's harder to reason all tests as a whole. Because now we need to look at more places to figure out how it should work under another option!
This commit is contained in:
parent
8b34687a36
commit
b0908d8739
1 changed files with 25 additions and 13 deletions
|
@ -154,7 +154,7 @@ describe Ci::Runner, models: true do
|
||||||
runner.locked = true
|
runner.locked = true
|
||||||
end
|
end
|
||||||
|
|
||||||
shared_examples 'locked build picker' do |serve_matching_tags|
|
shared_examples 'locked build picker' do
|
||||||
context 'when runner cannot pick untagged jobs' do
|
context 'when runner cannot pick untagged jobs' do
|
||||||
before do
|
before do
|
||||||
runner.run_untagged = false
|
runner.run_untagged = false
|
||||||
|
@ -170,16 +170,6 @@ describe Ci::Runner, models: true do
|
||||||
runner.tag_list = ['bb', 'cc']
|
runner.tag_list = ['bb', 'cc']
|
||||||
end
|
end
|
||||||
|
|
||||||
it "#{serve_matching_tags} handle it for matching tags" do
|
|
||||||
build.tag_list = ['bb']
|
|
||||||
expected = if serve_matching_tags
|
|
||||||
be_truthy
|
|
||||||
else
|
|
||||||
be_falsey
|
|
||||||
end
|
|
||||||
expect(runner.can_pick?(build)).to expected
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'cannot handle it for builds without matching tags' do
|
it 'cannot handle it for builds without matching tags' do
|
||||||
build.tag_list = ['aa']
|
build.tag_list = ['aa']
|
||||||
expect(runner.can_pick?(build)).to be_falsey
|
expect(runner.can_pick?(build)).to be_falsey
|
||||||
|
@ -192,7 +182,18 @@ describe Ci::Runner, models: true do
|
||||||
expect(runner.can_pick?(build)).to be_truthy
|
expect(runner.can_pick?(build)).to be_truthy
|
||||||
end
|
end
|
||||||
|
|
||||||
it_behaves_like 'locked build picker', true
|
it_behaves_like 'locked build picker'
|
||||||
|
|
||||||
|
context 'when having runner tags' do
|
||||||
|
before do
|
||||||
|
runner.tag_list = ['bb', 'cc']
|
||||||
|
build.tag_list = ['bb']
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'can handle it for matching tags' do
|
||||||
|
expect(runner.can_pick?(build)).to be_truthy
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'serving a different project' do
|
context 'serving a different project' do
|
||||||
|
@ -204,7 +205,18 @@ describe Ci::Runner, models: true do
|
||||||
expect(runner.can_pick?(build)).to be_falsey
|
expect(runner.can_pick?(build)).to be_falsey
|
||||||
end
|
end
|
||||||
|
|
||||||
it_behaves_like 'locked build picker', false
|
it_behaves_like 'locked build picker'
|
||||||
|
|
||||||
|
context 'when having runner tags' do
|
||||||
|
before do
|
||||||
|
runner.tag_list = ['bb', 'cc']
|
||||||
|
build.tag_list = ['bb']
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'cannot handle it for matching tags' do
|
||||||
|
expect(runner.can_pick?(build)).to be_falsey
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue