diff options
Diffstat (limited to 'spec/lib/gitlab/analytics')
5 files changed, 54 insertions, 16 deletions
diff --git a/spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb index 80d3f82b404..0a333965f68 100644 --- a/spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb +++ b/spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb @@ -7,6 +7,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder do let_it_be(:mr1) { create(:merge_request, target_project: project, source_project: project, allow_broken: true, created_at: 3.months.ago) } let_it_be(:mr2) { create(:merge_request, target_project: project, source_project: project, allow_broken: true, created_at: 1.month.ago) } let_it_be(:user) { create(:user) } + let(:params) { { current_user: user } } let(:records) do stage = build(:cycle_analytics_project_stage, { diff --git a/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb index c1ea000eb7b..14768025932 100644 --- a/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb +++ b/spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe Gitlab::Analytics::CycleAnalytics::Median do let_it_be(:project) { create(:project, :repository) } + let(:query) { Project.joins(merge_requests: :metrics) } let(:stage) do diff --git a/spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb index b8f9dde4291..ebc5ae2a632 100644 --- a/spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb +++ b/spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb @@ -7,16 +7,15 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::RecordsFetcher do Timecop.freeze { example.run } end + let(:params) { { from: 1.year.ago, current_user: user } } + let_it_be(:project) { create(:project, :empty_repo) } let_it_be(:user) { create(:user) } subject do Gitlab::Analytics::CycleAnalytics::DataCollector.new( stage: stage, - params: { - from: 1.year.ago, - current_user: user - } + params: params ).records_fetcher.serialized_records end @@ -34,6 +33,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::RecordsFetcher do describe 'for issue based stage' do let_it_be(:issue1) { create(:issue, project: project) } let_it_be(:issue2) { create(:issue, project: project, confidential: true) } + let(:stage) do build(:cycle_analytics_project_stage, { start_event_identifier: :plan_stage_start, @@ -130,4 +130,40 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::RecordsFetcher do end end end + + describe 'pagination' do + let_it_be(:issue1) { create(:issue, project: project) } + let_it_be(:issue2) { create(:issue, project: project) } + let_it_be(:issue3) { create(:issue, project: project) } + + let(:stage) do + build(:cycle_analytics_project_stage, { + start_event_identifier: :plan_stage_start, + end_event_identifier: :issue_first_mentioned_in_commit, + project: project + }) + end + + before(:all) do + issue1.metrics.update(first_added_to_board_at: 3.days.ago, first_mentioned_in_commit_at: 2.days.ago) + issue2.metrics.update(first_added_to_board_at: 3.days.ago, first_mentioned_in_commit_at: 2.days.ago) + issue3.metrics.update(first_added_to_board_at: 3.days.ago, first_mentioned_in_commit_at: 2.days.ago) + end + + before do + project.add_user(user, Gitlab::Access::DEVELOPER) + + stub_const('Gitlab::Analytics::CycleAnalytics::RecordsFetcher::MAX_RECORDS', 2) + end + + it 'limits the results' do + expect(subject.size).to eq(2) + end + + it 'loads the record for the next page' do + params[:page] = 2 + + expect(subject.size).to eq(1) + end + end end diff --git a/spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb index 52e9f2d9846..b6f9c8106c9 100644 --- a/spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb +++ b/spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb @@ -15,7 +15,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::StageEvents::CodeStageStart do other_merge_request = create(:merge_request, source_project: project, source_branch: 'a', target_branch: 'master') - records = subject.apply_query_customization(MergeRequest.all).where('merge_requests_closing_issues.issue_id IS NOT NULL') + records = subject.apply_query_customization(MergeRequest.all).where.not('merge_requests_closing_issues.issue_id' => nil) expect(records).to eq([merge_request]) expect(records).not_to include(other_merge_request) end diff --git a/spec/lib/gitlab/analytics/unique_visits_spec.rb b/spec/lib/gitlab/analytics/unique_visits_spec.rb index 6ac58e13f4c..f4d5c0b1eca 100644 --- a/spec/lib/gitlab/analytics/unique_visits_spec.rb +++ b/spec/lib/gitlab/analytics/unique_visits_spec.rb @@ -24,18 +24,18 @@ RSpec.describe Gitlab::Analytics::UniqueVisits, :clean_gitlab_redis_shared_state describe '#track_visit' do it 'tracks the unique weekly visits for targets' do - unique_visits.track_visit(visitor1_id, target1_id, 7.days.ago) - unique_visits.track_visit(visitor1_id, target1_id, 7.days.ago) - unique_visits.track_visit(visitor2_id, target1_id, 7.days.ago) + unique_visits.track_visit(target1_id, values: visitor1_id, time: 7.days.ago) + unique_visits.track_visit(target1_id, values: visitor1_id, time: 7.days.ago) + unique_visits.track_visit(target1_id, values: visitor2_id, time: 7.days.ago) - unique_visits.track_visit(visitor2_id, target2_id, 7.days.ago) - unique_visits.track_visit(visitor1_id, target2_id, 8.days.ago) - unique_visits.track_visit(visitor1_id, target2_id, 15.days.ago) + unique_visits.track_visit(target2_id, values: visitor2_id, time: 7.days.ago) + unique_visits.track_visit(target2_id, values: visitor1_id, time: 8.days.ago) + unique_visits.track_visit(target2_id, values: visitor1_id, time: 15.days.ago) - unique_visits.track_visit(visitor3_id, target4_id, 7.days.ago) + unique_visits.track_visit(target4_id, values: visitor3_id, time: 7.days.ago) - unique_visits.track_visit(visitor3_id, target5_id, 15.days.ago) - unique_visits.track_visit(visitor2_id, target5_id, 15.days.ago) + unique_visits.track_visit(target5_id, values: visitor3_id, time: 15.days.ago) + unique_visits.track_visit(target5_id, values: visitor2_id, time: 15.days.ago) expect(unique_visits.unique_visits_for(targets: target1_id)).to eq(2) expect(unique_visits.unique_visits_for(targets: target2_id)).to eq(1) @@ -61,7 +61,7 @@ RSpec.describe Gitlab::Analytics::UniqueVisits, :clean_gitlab_redis_shared_state end it 'sets the keys in Redis to expire automatically after 12 weeks' do - unique_visits.track_visit(visitor1_id, target1_id) + unique_visits.track_visit(target1_id, values: visitor1_id) Gitlab::Redis::SharedState.with do |redis| redis.scan_each(match: "{#{target1_id}}-*").each do |key| @@ -74,7 +74,7 @@ RSpec.describe Gitlab::Analytics::UniqueVisits, :clean_gitlab_redis_shared_state invalid_target_id = "x_invalid" expect do - unique_visits.track_visit(visitor1_id, invalid_target_id) + unique_visits.track_visit(invalid_target_id, values: visitor1_id) end.to raise_error(Gitlab::UsageDataCounters::HLLRedisCounter::UnknownEvent) end end |