summaryrefslogtreecommitdiff
path: root/spec/lib/ci/status_spec.rb
blob: a2eb14f3a9747e3afeb1313d803ce195c3c44946 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
require 'spec_helper'

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' }
        end

        context 'at least one failed' do
          let(:statuses) { [create(type, status: :success), create(type, status: :failed)] }
          it { is_expected.to eq 'failed' }
        end

        context 'at least one running' do
          let(:statuses) { [create(type, status: :success), create(type, status: :running)] }
          it { is_expected.to eq 'running' }
        end

        context 'at least one pending' do
          let(:statuses) { [create(type, status: :success), create(type, status: :pending)] }
          it { is_expected.to eq 'running' }
        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' }
        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
      end
    end
  end
end