diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2016-06-08 16:07:08 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2016-06-09 16:00:24 +0800 |
commit | b0908d873921c30ea58da703bf74b4149b6fc145 (patch) | |
tree | 043f0eb73b796b34264131fc77fda566960304d4 /spec/models/ci | |
parent | 8b34687a36c1ec4e558724513bcabdfa3b706854 (diff) | |
download | gitlab-ce-b0908d873921c30ea58da703bf74b4149b6fc145.tar.gz |
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!
Diffstat (limited to 'spec/models/ci')
-rw-r--r-- | spec/models/ci/runner_spec.rb | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index 477a32a1f9e..9a6bc6b96c1 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -154,7 +154,7 @@ describe Ci::Runner, models: true do runner.locked = true end - shared_examples 'locked build picker' do |serve_matching_tags| + shared_examples 'locked build picker' do context 'when runner cannot pick untagged jobs' do before do runner.run_untagged = false @@ -170,16 +170,6 @@ describe Ci::Runner, models: true do runner.tag_list = ['bb', 'cc'] 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 build.tag_list = ['aa'] 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 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 context 'serving a different project' do @@ -204,7 +205,18 @@ describe Ci::Runner, models: true do expect(runner.can_pick?(build)).to be_falsey 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 |