summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2018-02-15 13:23:39 +0000
committerTiago Botelho <tiagonbotelho@hotmail.com>2018-02-28 10:46:20 +0000
commit335ee79a73fafdf00fac6e8ffc286ce4bad273ff (patch)
treed30033fd007c992448ce02f42e46f9da48e223cb /spec/lib/gitlab
parent3f31da9c69c550d1698a1376e37d36f4e6e309b5 (diff)
downloadgitlab-ce-335ee79a73fafdf00fac6e8ffc286ce4bad273ff.tar.gz
Refactors median code to work with both single and multiple projects
Diffstat (limited to 'spec/lib/gitlab')
-rw-r--r--spec/lib/gitlab/cycle_analytics/usage_data_spec.rb36
-rw-r--r--spec/lib/gitlab/database/median_spec.rb15
2 files changed, 51 insertions, 0 deletions
diff --git a/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb b/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
new file mode 100644
index 00000000000..4815e91665a
--- /dev/null
+++ b/spec/lib/gitlab/cycle_analytics/usage_data_spec.rb
@@ -0,0 +1,36 @@
+require 'spec_helper'
+
+describe Gitlab::CycleAnalytics::UsageData do
+ let(:project) { create(:project, :repository) }
+ let(:user) { create(:user, :admin) }
+ let(:issue) { create(:issue, project: project, created_at: 2.days.ago) }
+ let(:milestone) { create(:milestone, project: project) }
+ let(:mr) { create_merge_request_closing_issue(issue, commit_message: "References #{issue.to_reference}") }
+ let(:pipeline) { create(:ci_empty_pipeline, status: 'created', project: project, ref: mr.source_branch, sha: mr.source_branch_sha, head_pipeline_of: mr) }
+
+ subject { described_class.new([project]) }
+
+ describe '#to_json' do
+ before do
+ allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([issue])
+
+ create_cycle(user, project, issue, mr, milestone, pipeline)
+ deploy_master
+ end
+
+ it 'returns the aggregated usage data of every selected project' do
+ result = subject.to_json
+ avg_cycle_analytics = result[:avg_cycle_analytics]
+
+ expect(result).to have_key(:avg_cycle_analytics)
+ CycleAnalytics::STAGES.each do |stage_name|
+ stage_values = avg_cycle_analytics[stage_name]
+
+ expect(avg_cycle_analytics).to have_key(stage_name)
+ expect(stage_values).to have_key(:average)
+ expect(stage_values).to have_key(:sd)
+ expect(stage_values).to have_key(:missing)
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/database/median_spec.rb b/spec/lib/gitlab/database/median_spec.rb
new file mode 100644
index 00000000000..36718a1f47b
--- /dev/null
+++ b/spec/lib/gitlab/database/median_spec.rb
@@ -0,0 +1,15 @@
+require 'spec_helper'
+
+describe Gitlab::Database::Median do
+ describe '#extract_medians' do
+ context 'when using MySQL' do
+ it 'returns an empty hash' do
+ values = [["1", "1000"]]
+
+ allow(Gitlab::Database).to receive(:mysql?).and_return(true)
+
+ expect(described_class.new.extract_median(values)).eq({})
+ end
+ end
+ end
+end