summaryrefslogtreecommitdiff
path: root/spec/models/ci
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-06-08 16:07:08 +0800
committerLin Jen-Shin <godfat@godfat.org>2016-06-09 16:00:24 +0800
commitb0908d873921c30ea58da703bf74b4149b6fc145 (patch)
tree043f0eb73b796b34264131fc77fda566960304d4 /spec/models/ci
parent8b34687a36c1ec4e558724513bcabdfa3b706854 (diff)
downloadgitlab-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.rb38
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