summaryrefslogtreecommitdiff
path: root/spec/workers
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-10-17 09:55:47 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2016-10-17 10:27:53 +0200
commita497803072edb4c8edbf9f4daf3832c122ee50e2 (patch)
tree2d0cf4e115f0e5f76015ff0ee1091f1788e4a519 /spec/workers
parent9c6c5c79f8d3a555ded0539e06a922bc058d5c20 (diff)
downloadgitlab-ce-a497803072edb4c8edbf9f4daf3832c122ee50e2.tar.gz
Improve spec for pipeline metrics workeradd-pipeline-metrics-worker
Diffstat (limited to 'spec/workers')
-rw-r--r--spec/workers/pipeline_metrics_worker_spec.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/workers/pipeline_metrics_worker_spec.rb b/spec/workers/pipeline_metrics_worker_spec.rb
new file mode 100644
index 00000000000..f58df3f0d6e
--- /dev/null
+++ b/spec/workers/pipeline_metrics_worker_spec.rb
@@ -0,0 +1,46 @@
+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 eq(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 eq(pipeline.finished_at)
+ end
+ end
+ end
+end