summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb20
-rw-r--r--spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb69
-rw-r--r--spec/lib/gitlab/usage_data_spec.rb40
3 files changed, 119 insertions, 10 deletions
diff --git a/spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb
index b5e32d1875f..7a01f7d1de8 100644
--- a/spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb
+++ b/spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb
@@ -33,4 +33,24 @@ describe Gitlab::UsageDataCounters::WebIdeCounter, :clean_gitlab_redis_shared_st
it_behaves_like 'counter examples'
end
+
+ describe '.totals' do
+ commits = 5
+ merge_requests = 3
+ views = 2
+
+ before do
+ commits.times { described_class.increment_commits_count }
+ merge_requests.times { described_class.increment_merge_requests_count }
+ views.times { described_class.increment_views_count }
+ end
+
+ it 'can report all totals' do
+ expect(described_class.totals).to include(
+ web_ide_commits: commits,
+ web_ide_views: views,
+ web_ide_merge_requests: merge_requests
+ )
+ end
+ end
end
diff --git a/spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb
new file mode 100644
index 00000000000..41afbbb191c
--- /dev/null
+++ b/spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::UsageDataCounters::WikiPageCounter, :clean_gitlab_redis_shared_state do
+ shared_examples :wiki_page_event do |event|
+ describe ".count(#{event})" do
+ it "increments the wiki page #{event} counter by 1" do
+ expect do
+ described_class.count(event)
+ end.to change { described_class.read(event) }.by 1
+ end
+ end
+
+ describe ".read(#{event})" do
+ event_count = 5
+
+ it "returns the total number of #{event} events" do
+ event_count.times do
+ described_class.count(event)
+ end
+
+ expect(described_class.read(event)).to eq(event_count)
+ end
+ end
+ end
+
+ include_examples :wiki_page_event, :create
+ include_examples :wiki_page_event, :update
+ include_examples :wiki_page_event, :delete
+
+ describe 'totals' do
+ creations = 5
+ edits = 3
+ deletions = 2
+
+ before do
+ creations.times do
+ described_class.count(:create)
+ end
+ edits.times do
+ described_class.count(:update)
+ end
+ deletions.times do
+ described_class.count(:delete)
+ end
+ end
+
+ it 'can report all totals' do
+ expect(described_class.totals).to include(
+ wiki_pages_update: edits,
+ wiki_pages_create: creations,
+ wiki_pages_delete: deletions
+ )
+ end
+ end
+
+ describe 'unknown events' do
+ error = described_class::UnknownEvent
+
+ it 'cannot increment' do
+ expect { described_class.count(:wibble) }.to raise_error error
+ end
+
+ it 'cannot read' do
+ expect { described_class.read(:wibble) }.to raise_error error
+ end
+ end
+end
diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb
index 270dd652c20..2289d906944 100644
--- a/spec/lib/gitlab/usage_data_spec.rb
+++ b/spec/lib/gitlab/usage_data_spec.rb
@@ -57,20 +57,18 @@ describe Gitlab::UsageData do
gitaly
database
avg_cycle_analytics
- web_ide_views
- web_ide_commits
- web_ide_merge_requests
influxdb_metrics_enabled
prometheus_metrics_enabled
))
- end
-
- it 'calls expected usage data methods' do
- expect(Gitlab::UsageDataCounters::WebIdeCounter).to receive(:total_commits_count)
- expect(Gitlab::UsageDataCounters::WebIdeCounter).to receive(:total_merge_requests_count)
- expect(Gitlab::UsageDataCounters::WebIdeCounter).to receive(:total_views_count)
- subject
+ expect(subject).to include(
+ wiki_pages_create: a_kind_of(Integer),
+ wiki_pages_update: a_kind_of(Integer),
+ wiki_pages_delete: a_kind_of(Integer),
+ web_ide_views: a_kind_of(Integer),
+ web_ide_commits: a_kind_of(Integer),
+ web_ide_merge_requests: a_kind_of(Integer)
+ )
end
it "gathers usage counts" do
@@ -192,6 +190,28 @@ describe Gitlab::UsageData do
end
end
+ describe '#usage_data_counters' do
+ subject { described_class.usage_data_counters }
+
+ it { is_expected.to all(respond_to :totals) }
+
+ describe 'the results of calling #totals on all objects in the array' do
+ subject { described_class.usage_data_counters.map(&:totals) }
+
+ it do
+ is_expected
+ .to all(be_a Hash)
+ .and all(have_attributes(keys: all(be_a Symbol), values: all(be_a Integer)))
+ end
+ end
+
+ it 'does not have any conflicts' do
+ all_keys = subject.flat_map { |counter| counter.totals.keys }
+
+ expect(all_keys.size).to eq all_keys.to_set.size
+ end
+ end
+
describe '#features_usage_data_ce' do
subject { described_class.features_usage_data_ce }