bfb20200e9
The amount of precision times have in databases is variable, so we need tolerances when comparing in specs. It's better to have the tolerance defined in one place than several.
46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe PipelineMetricsWorker do
|
|
let(:project) { create(:project) }
|
|
let!(:merge_request) { create(:merge_request, source_project: project, source_branch: pipeline.ref) }
|
|
|
|
let(:pipeline) do
|
|
create(:ci_empty_pipeline,
|
|
status: status,
|
|
project: project,
|
|
ref: 'master',
|
|
sha: project.repository.commit('master').id,
|
|
started_at: 1.hour.ago,
|
|
finished_at: Time.now)
|
|
end
|
|
|
|
describe '#perform' do
|
|
subject { described_class.new.perform(pipeline.id) }
|
|
|
|
context 'when pipeline is running' do
|
|
let(:status) { 'running' }
|
|
|
|
it 'records the build start time' do
|
|
subject
|
|
|
|
expect(merge_request.reload.metrics.latest_build_started_at).to be_like_time(pipeline.started_at)
|
|
end
|
|
|
|
it 'clears the build end time' do
|
|
subject
|
|
|
|
expect(merge_request.reload.metrics.latest_build_finished_at).to be_nil
|
|
end
|
|
end
|
|
|
|
context 'when pipeline succeeded' do
|
|
let(:status) { 'success' }
|
|
|
|
it 'records the build end time' do
|
|
subject
|
|
|
|
expect(merge_request.reload.metrics.latest_build_finished_at).to be_like_time(pipeline.finished_at)
|
|
end
|
|
end
|
|
end
|
|
end
|