summaryrefslogtreecommitdiff
path: root/spec/lib/ci/status_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/ci/status_spec.rb')
-rw-r--r--spec/lib/ci/status_spec.rb93
1 files changed, 73 insertions, 20 deletions
diff --git a/spec/lib/ci/status_spec.rb b/spec/lib/ci/status_spec.rb
index a2eb14f3a97..47f3df6e3ce 100644
--- a/spec/lib/ci/status_spec.rb
+++ b/spec/lib/ci/status_spec.rb
@@ -4,38 +4,91 @@ describe Ci::Status do
describe '.get_status' do
subject { described_class.get_status(statuses) }
- [:ci_build, :generic_commit_status].each do |type|
- context "for #{type}" do
- context 'all successful' do
- let(:statuses) { Array.new(2) { create(type, status: :success) } }
- it { is_expected.to eq 'success' }
+ shared_examples 'build status summary' do
+ context 'all successful' do
+ let(:statuses) { Array.new(2) { create(type, status: :success) } }
+ it { is_expected.to eq 'success' }
+ end
+
+ context 'at least one failed' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :failed)]
end
- context 'at least one failed' do
- let(:statuses) { [create(type, status: :success), create(type, status: :failed)] }
- it { is_expected.to eq 'failed' }
+ it { is_expected.to eq 'failed' }
+ end
+
+ context 'at least one running' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :running)]
end
- context 'at least one running' do
- let(:statuses) { [create(type, status: :success), create(type, status: :running)] }
- it { is_expected.to eq 'running' }
+ it { is_expected.to eq 'running' }
+ end
+
+ context 'at least one pending' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :pending)]
end
- context 'at least one pending' do
- let(:statuses) { [create(type, status: :success), create(type, status: :pending)] }
- it { is_expected.to eq 'running' }
+ it { is_expected.to eq 'running' }
+ end
+
+ context 'success and failed but allowed to fail' do
+ let(:statuses) do
+ [create(type, status: :success),
+ create(type, status: :failed, allow_failure: true)]
end
- context 'success and failed but allowed to fail' do
- let(:statuses) { [create(type, status: :success), create(type, status: :failed, allow_failure: true)] }
- it { is_expected.to eq 'success' }
+ it { is_expected.to eq 'success' }
+ end
+
+ context 'one failed but allowed to fail' do
+ let(:statuses) { [create(type, status: :failed, allow_failure: true)] }
+ it { is_expected.to eq 'success' }
+ end
+
+ context 'success and canceled' do
+ let(:statuses) do
+ [create(type, status: :success), create(type, status: :canceled)]
end
+ it { is_expected.to eq 'failed' }
+ end
- context 'one failed but allowed to fail' do
- let(:statuses) { [create(type, status: :failed, allow_failure: true)] }
- it { is_expected.to eq 'success' }
+ context 'all canceled' do
+ let(:statuses) do
+ [create(type, status: :canceled), create(type, status: :canceled)]
end
+ it { is_expected.to eq 'canceled' }
end
+
+ context 'success and canceled but allowed to fail' do
+ let(:statuses) do
+ [create(type, status: :success),
+ create(type, status: :canceled, allow_failure: true)]
+ end
+
+ it { is_expected.to eq 'success' }
+ end
+
+ context 'one finished and second running but allowed to fail' do
+ let(:statuses) do
+ [create(type, status: :success),
+ create(type, status: :running, allow_failure: true)]
+ end
+
+ it { is_expected.to eq 'running' }
+ end
+ end
+
+ context 'ci build statuses' do
+ let(:type) { :ci_build }
+ it_behaves_like 'build status summary'
+ end
+
+ context 'generic commit statuses' do
+ let(:type) { :generic_commit_status }
+ it_behaves_like 'build status summary'
end
end
end