diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-12 00:10:11 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-12 00:10:11 +0000 |
commit | c6f0b221b71133792f2c9e5a026f3744c16d5ef5 (patch) | |
tree | 864e5737806d454fbf23c681d5bced9b3e4a7d77 /spec/lib/gitlab/analytics | |
parent | 3f45eb27e9586ad87682c2d125770e119a7e9fe0 (diff) | |
download | gitlab-ce-c6f0b221b71133792f2c9e5a026f3744c16d5ef5.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/analytics')
-rw-r--r-- | spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb new file mode 100644 index 00000000000..92ecec350ae --- /dev/null +++ b/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Analytics::CycleAnalytics::Median do + let_it_be(:project) { create(:project, :repository) } + let(:query) { Project.joins(merge_requests: :metrics) } + + let(:stage) do + build( + :cycle_analytics_project_stage, + start_event_identifier: Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestCreated.identifier, + end_event_identifier: Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestMerged.identifier, + project: project + ) + end + + subject { described_class.new(stage: stage, query: query).seconds } + + around do |example| + Timecop.freeze { example.run } + end + + it 'retruns nil when no results' do + expect(subject).to eq(nil) + end + + it 'returns median duration seconds as float' do + merge_request1 = create(:merge_request, source_branch: '1', target_project: project, source_project: project) + merge_request2 = create(:merge_request, source_branch: '2', target_project: project, source_project: project) + + Timecop.travel(5.minutes.from_now) do + merge_request1.metrics.update!(merged_at: Time.zone.now) + end + + Timecop.travel(10.minutes.from_now) do + merge_request2.metrics.update!(merged_at: Time.zone.now) + end + + expect(subject).to be_within(0.5).of(7.5.minutes.seconds) + end +end |