Cleanup that a bit

This commit is contained in:
Lin Jen-Shin 2016-07-20 23:17:28 +08:00
parent 782b384f8a
commit e8bab842cb
1 changed files with 27 additions and 42 deletions

View File

@ -1115,42 +1115,22 @@ describe Project, models: true do
end
describe '#latest_successful_builds_for' do
def create_pipeline
def create_pipeline(status = 'success')
create(:ci_pipeline, project: project,
sha: project.commit.sha,
ref: project.default_branch,
status: 'success')
status: status)
end
def create_build(new_pipeline = pipeline, name = 'test')
create(:ci_build, :success, :artifacts,
pipeline: new_pipeline,
status: new_pipeline.status,
name: name)
end
let(:project) { create(:project) }
let(:pipeline) { create_pipeline }
let(:build) { create_build }
context 'with succeeded pipeline' do
context 'standalone pipeline' do
before do
build
end
it 'returns builds for ref for default_branch' do
builds = project.latest_successful_builds_for
expect(builds).to contain_exactly(build)
end
it 'returns empty relation if the build cannot be found' do
builds = project.latest_successful_builds_for('TAIL')
expect(builds).to be_kind_of(ActiveRecord::Relation)
expect(builds).to be_empty
end
end
context 'with many builds' do
before do
@ -1169,28 +1149,33 @@ describe Project, models: true do
end
end
context 'with multiple pipelines and builds' do
shared_examples 'latest successful one' do
it 'gives the latest build from latest pipeline' do
latest_build = project.latest_successful_builds_for.first
context 'with succeeded pipeline' do
let!(:build) { create_build }
expect(latest_build).to eq(build)
context 'standalone pipeline' do
it 'returns builds for ref for default_branch' do
builds = project.latest_successful_builds_for
expect(builds).to contain_exactly(build)
end
it 'returns empty relation if the build cannot be found' do
builds = project.latest_successful_builds_for('TAIL')
expect(builds).to be_kind_of(ActiveRecord::Relation)
expect(builds).to be_empty
end
end
context 'with some pending pipeline' do
before do
# make sure pipeline was old, but still the latest success one
build
new_pipeline = create(:ci_pipeline, project: project,
sha: project.commit.sha,
ref: project.default_branch,
status: 'pending')
create(:ci_build, :pending, :artifacts, pipeline: new_pipeline)
create_build(create_pipeline('pending'))
end
it_behaves_like 'latest successful one'
it 'gives the latest build from latest pipeline' do
latest_build = project.latest_successful_builds_for
expect(latest_build).to contain_exactly(build)
end
end
end