summaryrefslogtreecommitdiff
path: root/spec/models/analytics
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 10:00:54 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 10:00:54 +0000
commit3cccd102ba543e02725d247893729e5c73b38295 (patch)
treef36a04ec38517f5deaaacb5acc7d949688d1e187 /spec/models/analytics
parent205943281328046ef7b4528031b90fbda70c75ac (diff)
downloadgitlab-ce-3cccd102ba543e02725d247893729e5c73b38295.tar.gz
Add latest changes from gitlab-org/gitlab@14-10-stable-eev14.10.0-rc42
Diffstat (limited to 'spec/models/analytics')
-rw-r--r--spec/models/analytics/cycle_analytics/aggregation_spec.rb77
1 files changed, 76 insertions, 1 deletions
diff --git a/spec/models/analytics/cycle_analytics/aggregation_spec.rb b/spec/models/analytics/cycle_analytics/aggregation_spec.rb
index 4bf737df56a..6071e4b3d21 100644
--- a/spec/models/analytics/cycle_analytics/aggregation_spec.rb
+++ b/spec/models/analytics/cycle_analytics/aggregation_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe Analytics::CycleAnalytics::Aggregation, type: :model do
it { is_expected.not_to validate_presence_of(:group) }
it { is_expected.not_to validate_presence_of(:enabled) }
- %i[incremental_runtimes_in_seconds incremental_processed_records last_full_run_runtimes_in_seconds last_full_run_processed_records].each do |column|
+ %i[incremental_runtimes_in_seconds incremental_processed_records full_runtimes_in_seconds full_processed_records].each do |column|
it "validates the array length of #{column}" do
record = described_class.new(column => [1] * 11)
@@ -20,6 +20,81 @@ RSpec.describe Analytics::CycleAnalytics::Aggregation, type: :model do
end
end
+ describe 'attribute updater methods' do
+ subject(:aggregation) { build(:cycle_analytics_aggregation) }
+
+ describe '#cursor_for' do
+ it 'returns empty cursors' do
+ aggregation.last_full_issues_id = nil
+ aggregation.last_full_issues_updated_at = nil
+
+ expect(aggregation.cursor_for(:full, Issue)).to eq({})
+ end
+
+ context 'when cursor is not empty' do
+ it 'returns the cursor values' do
+ current_time = Time.current
+
+ aggregation.last_full_issues_id = 1111
+ aggregation.last_full_issues_updated_at = current_time
+
+ expect(aggregation.cursor_for(:full, Issue)).to eq({ id: 1111, updated_at: current_time })
+ end
+ end
+ end
+
+ describe '#refresh_last_run' do
+ it 'updates the run_at column' do
+ freeze_time do
+ aggregation.refresh_last_run(:incremental)
+
+ expect(aggregation.last_incremental_run_at).to eq(Time.current)
+ end
+ end
+ end
+
+ describe '#reset_full_run_cursors' do
+ it 'resets all full run cursors to nil' do
+ aggregation.last_full_issues_id = 111
+ aggregation.last_full_issues_updated_at = Time.current
+ aggregation.last_full_merge_requests_id = 111
+ aggregation.last_full_merge_requests_updated_at = Time.current
+
+ aggregation.reset_full_run_cursors
+
+ expect(aggregation).to have_attributes(
+ last_full_issues_id: nil,
+ last_full_issues_updated_at: nil,
+ last_full_merge_requests_id: nil,
+ last_full_merge_requests_updated_at: nil
+ )
+ end
+ end
+
+ describe '#set_cursor' do
+ it 'sets the cursor values for the given mode' do
+ aggregation.set_cursor(:full, Issue, { id: 2222, updated_at: nil })
+
+ expect(aggregation).to have_attributes(
+ last_full_issues_id: 2222,
+ last_full_issues_updated_at: nil
+ )
+ end
+ end
+
+ describe '#set_stats' do
+ it 'appends stats to the runtime and processed_records attributes' do
+ aggregation.set_stats(:full, 10, 20)
+ aggregation.set_stats(:full, 20, 30)
+
+ expect(aggregation).to have_attributes(
+ full_runtimes_in_seconds: [10, 20],
+ full_processed_records: [20, 30]
+ )
+ end
+ end
+ end
+
describe '#safe_create_for_group' do
let_it_be(:group) { create(:group) }
let_it_be(:subgroup) { create(:group, parent: group) }