Prefer a description for it and split the case:
Feedback: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7508#note_18730091
This commit is contained in:
parent
ca639c9b82
commit
1edb1746a5
2 changed files with 51 additions and 32 deletions
|
@ -403,15 +403,15 @@ describe Ci::Pipeline, models: true do
|
|||
end
|
||||
|
||||
describe '#cancelable?' do
|
||||
subject { pipeline.cancelable? }
|
||||
|
||||
%i[created running pending].each do |status|
|
||||
context "when there is a build #{status}" do
|
||||
before do
|
||||
create(:ci_build, status, pipeline: pipeline)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
it 'is cancelable' do
|
||||
expect(pipeline.cancelable?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context "when there is an external job #{status}" do
|
||||
|
@ -419,7 +419,9 @@ describe Ci::Pipeline, models: true do
|
|||
create(:generic_commit_status, status, pipeline: pipeline)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
it 'is cancelable' do
|
||||
expect(pipeline.cancelable?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
%i[success failed canceled].each do |status2|
|
||||
|
@ -430,7 +432,9 @@ describe Ci::Pipeline, models: true do
|
|||
create(build.sample, status2, pipeline: pipeline)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
it 'is cancelable' do
|
||||
expect(pipeline.cancelable?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -441,7 +445,9 @@ describe Ci::Pipeline, models: true do
|
|||
create(:ci_build, status, pipeline: pipeline)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
it 'is not cancelable' do
|
||||
expect(pipeline.cancelable?).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context "when there is an external job #{status}" do
|
||||
|
@ -449,7 +455,9 @@ describe Ci::Pipeline, models: true do
|
|||
create(:generic_commit_status, status, pipeline: pipeline)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
it 'is not cancelable' do
|
||||
expect(pipeline.cancelable?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -134,20 +134,20 @@ describe HasStatus do
|
|||
let!(:job) { create(type, status) }
|
||||
|
||||
describe ".#{status}" do
|
||||
subject { CommitStatus.public_send(status).all }
|
||||
|
||||
it { is_expected.to contain_exactly(job) }
|
||||
it 'contains the job' do
|
||||
expect(CommitStatus.public_send(status).all).
|
||||
to contain_exactly(job)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.relevant' do
|
||||
subject { CommitStatus.relevant.all }
|
||||
|
||||
it do
|
||||
case status
|
||||
when :created
|
||||
is_expected.to be_empty
|
||||
else
|
||||
is_expected.to contain_exactly(job)
|
||||
if status == :created
|
||||
it 'contains nothing' do
|
||||
expect(CommitStatus.relevant.all).to be_empty
|
||||
end
|
||||
else
|
||||
it 'contains the job' do
|
||||
expect(CommitStatus.relevant.all).to contain_exactly(job)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -161,17 +161,22 @@ describe HasStatus do
|
|||
end
|
||||
|
||||
context 'for scope with more statuses' do
|
||||
shared_examples 'having a job' do |type, status, excluded_status|
|
||||
shared_examples 'containing the job' do |type, status|
|
||||
context "when it's #{status} #{type} job" do
|
||||
let!(:job) { create(type, status) }
|
||||
|
||||
it do
|
||||
case status
|
||||
when excluded_status
|
||||
is_expected.to be_empty
|
||||
else
|
||||
is_expected.to contain_exactly(job)
|
||||
end
|
||||
it 'contains the job' do
|
||||
is_expected.to contain_exactly(job)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'not containing the job' do |type, status|
|
||||
context "when it's #{status} #{type} job" do
|
||||
let!(:job) { create(type, status) }
|
||||
|
||||
it 'contains nothing' do
|
||||
is_expected.to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -179,25 +184,31 @@ describe HasStatus do
|
|||
describe '.running_or_pending' do
|
||||
subject { CommitStatus.running_or_pending }
|
||||
|
||||
%i[running pending created].each do |status|
|
||||
it_behaves_like 'having a job', random_type, status, :created
|
||||
%i[running pending].each do |status|
|
||||
it_behaves_like 'containing the job', random_type, status
|
||||
end
|
||||
|
||||
it_behaves_like 'not containing the job', random_type, :created
|
||||
end
|
||||
|
||||
describe '.finished' do
|
||||
subject { CommitStatus.finished }
|
||||
|
||||
%i[success failed canceled created].each do |status|
|
||||
it_behaves_like 'having a job', random_type, status, :created
|
||||
%i[success failed canceled].each do |status|
|
||||
it_behaves_like 'containing the job', random_type, status
|
||||
end
|
||||
|
||||
it_behaves_like 'not containing the job', random_type, :created
|
||||
end
|
||||
|
||||
describe '.cancelable' do
|
||||
subject { CommitStatus.cancelable }
|
||||
|
||||
%i[running pending created failed].each do |status|
|
||||
it_behaves_like 'having a job', random_type, status, :failed
|
||||
%i[running pending created].each do |status|
|
||||
it_behaves_like 'containing the job', random_type, status
|
||||
end
|
||||
|
||||
it_behaves_like 'not containing the job', random_type, :failed
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue