summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-12-14 21:00:06 +0800
committerLin Jen-Shin <godfat@godfat.org>2016-12-14 23:37:49 +0800
commit7cced60069c248156decf6ceabc4d1f447e47ff7 (patch)
tree1c7c6f52745c3b2066094dcd6edec3fd99e91f62 /spec
parent3ce6ba7db9bcdeb9a642e7020fb736ebe54f88aa (diff)
downloadgitlab-ce-7cced60069c248156decf6ceabc4d1f447e47ff7.tar.gz
Introduce latest_status and add a few tests
Feedback: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7333#note_20003268
Diffstat (limited to 'spec')
-rw-r--r--spec/models/ci/pipeline_spec.rb57
-rw-r--r--spec/models/commit_spec.rb4
2 files changed, 59 insertions, 2 deletions
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index e78ae14b737..21df5df1b76 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -381,6 +381,63 @@ describe Ci::Pipeline, models: true do
end
end
+ shared_context 'with some empty pipelines' do
+ before do
+ create_pipeline(:canceled, 'ref', 'A')
+ create_pipeline(:success, 'ref', 'A')
+ create_pipeline(:failed, 'ref', 'B')
+ create_pipeline(:skipped, 'feature', 'C')
+ end
+
+ def create_pipeline(status, ref, sha)
+ create(:ci_empty_pipeline, status: status, ref: ref, sha: sha)
+ end
+ end
+
+ describe '.latest' do
+ include_context 'with some empty pipelines'
+
+ context 'when no ref is specified' do
+ let(:pipelines) { Ci::Pipeline.latest.all }
+
+ it 'returns the latest pipeline for the same ref and different sha' do
+ expect(pipelines.map(&:sha)).to contain_exactly('A', 'B', 'C')
+ expect(pipelines.map(&:status)).
+ to contain_exactly('success', 'failed', 'skipped')
+ end
+ end
+
+ context 'when ref is specified' do
+ let(:pipelines) { Ci::Pipeline.latest('ref').all }
+
+ it 'returns the latest pipeline for ref and different sha' do
+ expect(pipelines.map(&:sha)).to contain_exactly('A', 'B')
+ expect(pipelines.map(&:status)).
+ to contain_exactly('success', 'failed')
+ end
+ end
+ end
+
+ describe '.latest_status' do
+ include_context 'with some empty pipelines'
+
+ context 'when no ref is specified' do
+ let(:latest_status) { Ci::Pipeline.latest_status }
+
+ it 'returns the latest status for the same ref and different sha' do
+ expect(latest_status).to eq(Ci::Pipeline.latest.status)
+ end
+ end
+
+ context 'when ref is specified' do
+ let(:latest_status) { Ci::Pipeline.latest_status('ref') }
+
+ it 'returns the latest status for ref and different sha' do
+ expect(latest_status).to eq(Ci::Pipeline.latest_status('ref'))
+ end
+ end
+ end
+
describe '#status' do
let!(:build) { create(:ci_build, :created, pipeline: pipeline, name: 'test') }
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index b81fab0372a..a2a8392699e 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -224,7 +224,7 @@ eos
end
it 'gives compound status from latest pipelines' do
- expect(commit.status).to eq(Ci::Pipeline.latest.status)
+ expect(commit.status).to eq(Ci::Pipeline.latest_status)
end
end
@@ -251,7 +251,7 @@ eos
end
it 'gives compound status from latest pipelines if ref is nil' do
- expect(commit.status(nil)).to eq(Ci::Pipeline.latest.status)
+ expect(commit.status(nil)).to eq(Ci::Pipeline.latest_status)
end
end
end