From 946080b5e97da0a94901ed4dcc95c2664c47c476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C5=82gorzata=20Ksionek?= Date: Tue, 25 Jun 2019 10:21:21 +0200 Subject: Modify classes for easier extraction Go back to project as basic argument --- app/models/cycle_analytics/base.rb | 2 +- app/models/cycle_analytics/group_level.rb | 4 ++-- app/models/cycle_analytics/project_level.rb | 3 +-- lib/gitlab/cycle_analytics/base_event_fetcher.rb | 9 ++++++--- lib/gitlab/cycle_analytics/base_query.rb | 2 +- lib/gitlab/cycle_analytics/base_stage.rb | 11 +++++++---- spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/code_stage_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/issue_stage_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/plan_stage_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/review_stage_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/shared_event_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb | 2 +- spec/lib/gitlab/cycle_analytics/staging_stage_spec.rb | 2 +- 14 files changed, 26 insertions(+), 21 deletions(-) diff --git a/app/models/cycle_analytics/base.rb b/app/models/cycle_analytics/base.rb index 24f6701d47b..240be10c1f9 100644 --- a/app/models/cycle_analytics/base.rb +++ b/app/models/cycle_analytics/base.rb @@ -19,7 +19,7 @@ module CycleAnalytics end def [](stage_name) - Gitlab::CycleAnalytics::Stage[stage_name].new(projects: @projects, options: @options) + Gitlab::CycleAnalytics::Stage[stage_name].new(project: @project, options: @options) end private diff --git a/app/models/cycle_analytics/group_level.rb b/app/models/cycle_analytics/group_level.rb index c48919a61ac..a7853aadbb2 100644 --- a/app/models/cycle_analytics/group_level.rb +++ b/app/models/cycle_analytics/group_level.rb @@ -2,8 +2,8 @@ module CycleAnalytics class GroupLevel < Base - def initialize(project: nil, projects:, options:) - @projects = projects + def initialize(project: nil, options:) + @project = project @options = options end diff --git a/app/models/cycle_analytics/project_level.rb b/app/models/cycle_analytics/project_level.rb index 64e4352cb64..93c4b64ba3e 100644 --- a/app/models/cycle_analytics/project_level.rb +++ b/app/models/cycle_analytics/project_level.rb @@ -2,8 +2,7 @@ module CycleAnalytics class ProjectLevel < Base - def initialize(project:, projects: nil, options:) - @projects = [project] + def initialize(project:, options:) @project = project @options = options end diff --git a/lib/gitlab/cycle_analytics/base_event_fetcher.rb b/lib/gitlab/cycle_analytics/base_event_fetcher.rb index 8e522d4da86..44bf8775f42 100644 --- a/lib/gitlab/cycle_analytics/base_event_fetcher.rb +++ b/lib/gitlab/cycle_analytics/base_event_fetcher.rb @@ -9,9 +9,8 @@ module Gitlab MAX_EVENTS = 50 - def initialize(projects:, stage:, options:) - @projects = projects - @project = @projects.first + def initialize(project:, stage:, options:) + @project = project @stage = stage @options = options end @@ -76,6 +75,10 @@ module Gitlab namespace = @group ? @group.name : @project.namespace { namespace: namespace } end + + def projects + [@project] + end end end end diff --git a/lib/gitlab/cycle_analytics/base_query.rb b/lib/gitlab/cycle_analytics/base_query.rb index 60e3a9fc589..720a38dfe4d 100644 --- a/lib/gitlab/cycle_analytics/base_query.rb +++ b/lib/gitlab/cycle_analytics/base_query.rb @@ -10,7 +10,7 @@ module Gitlab private def base_query - @base_query ||= stage_query(@projects.map(&:id)) # rubocop:disable Gitlab/ModuleWithInstanceVariables + @base_query ||= stage_query(projects.map(&:id)) # rubocop:disable Gitlab/ModuleWithInstanceVariables end def stage_query(project_ids) diff --git a/lib/gitlab/cycle_analytics/base_stage.rb b/lib/gitlab/cycle_analytics/base_stage.rb index b7f52432df1..9be96780247 100644 --- a/lib/gitlab/cycle_analytics/base_stage.rb +++ b/lib/gitlab/cycle_analytics/base_stage.rb @@ -5,9 +5,8 @@ module Gitlab class BaseStage include BaseQuery - def initialize(projects:, options:) - @projects = projects - @project = projects.first + def initialize(project:, options:) + @project = project @options = options end @@ -64,7 +63,7 @@ module Gitlab private def event_fetcher - @event_fetcher ||= Gitlab::CycleAnalytics::EventFetcher[name].new(projects: @projects, + @event_fetcher ||= Gitlab::CycleAnalytics::EventFetcher[name].new(project: @project, stage: name, options: event_options) end @@ -72,6 +71,10 @@ module Gitlab def event_options @options.merge(start_time_attrs: start_time_attrs, end_time_attrs: end_time_attrs) end + + def projects + [@project] + end end end end diff --git a/spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb b/spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb index 83703c72207..8b07da11c5d 100644 --- a/spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb @@ -13,7 +13,7 @@ describe Gitlab::CycleAnalytics::BaseEventFetcher do end subject do - described_class.new(projects: [project], + described_class.new(project: project, stage: :issue, options: options).fetch end diff --git a/spec/lib/gitlab/cycle_analytics/code_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/code_stage_spec.rb index 416f5e6b951..c738cc49c1f 100644 --- a/spec/lib/gitlab/cycle_analytics/code_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/code_stage_spec.rb @@ -11,7 +11,7 @@ describe Gitlab::CycleAnalytics::CodeStage do let!(:mr_1) { create(:merge_request, source_project: project, created_at: 15.minutes.ago) } let!(:mr_2) { create(:merge_request, source_project: project, created_at: 10.minutes.ago, source_branch: 'A') } let!(:mr_3) { create(:merge_request, source_project: project, created_at: 10.minutes.ago, source_branch: 'B') } - let(:stage) { described_class.new(projects: [project], options: { from: 2.days.ago, current_user: project.creator }) } + let(:stage) { described_class.new(project: project, options: { from: 2.days.ago, current_user: project.creator }) } before do issue_1.metrics.update!(first_associated_with_milestone_at: 60.minutes.ago, first_mentioned_in_commit_at: 45.minutes.ago) diff --git a/spec/lib/gitlab/cycle_analytics/issue_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/issue_stage_spec.rb index 59b9e5a731a..3b6af9cbaed 100644 --- a/spec/lib/gitlab/cycle_analytics/issue_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/issue_stage_spec.rb @@ -8,7 +8,7 @@ describe Gitlab::CycleAnalytics::IssueStage do let!(:issue_2) { create(:issue, project: project, created_at: 60.minutes.ago) } let!(:issue_3) { create(:issue, project: project, created_at: 30.minutes.ago) } let!(:issue_without_milestone) { create(:issue, project: project, created_at: 1.minute.ago) } - let(:stage) { described_class.new(projects: [project], options: { from: 2.days.ago, current_user: project.creator }) } + let(:stage) { described_class.new(project: project, options: { from: 2.days.ago, current_user: project.creator }) } before do issue_1.metrics.update!(first_associated_with_milestone_at: 60.minutes.ago ) diff --git a/spec/lib/gitlab/cycle_analytics/plan_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/plan_stage_spec.rb index 8a2879e6c36..506a8160412 100644 --- a/spec/lib/gitlab/cycle_analytics/plan_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/plan_stage_spec.rb @@ -8,7 +8,7 @@ describe Gitlab::CycleAnalytics::PlanStage do let!(:issue_2) { create(:issue, project: project, created_at: 60.minutes.ago) } let!(:issue_3) { create(:issue, project: project, created_at: 30.minutes.ago) } let!(:issue_without_milestone) { create(:issue, project: project, created_at: 1.minute.ago) } - let(:stage) { described_class.new(projects: [project], options: { from: 2.days.ago, current_user: project.creator }) } + let(:stage) { described_class.new(project: project, options: { from: 2.days.ago, current_user: project.creator }) } before do issue_1.metrics.update!(first_associated_with_milestone_at: 60.minutes.ago, first_mentioned_in_commit_at: 10.minutes.ago) diff --git a/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb index 70097dd6c00..f072a9644e8 100644 --- a/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb @@ -11,7 +11,7 @@ describe Gitlab::CycleAnalytics::ReviewStage do let!(:mr_2) { create(:merge_request, :closed, source_project: project, created_at: 40.minutes.ago, source_branch: 'A') } let!(:mr_3) { create(:merge_request, source_project: project, created_at: 10.minutes.ago, source_branch: 'B') } let!(:mr_4) { create(:merge_request, source_project: project, created_at: 10.minutes.ago, source_branch: 'C') } - let(:stage) { described_class.new(projects: [project], options: { from: 2.days.ago, current_user: project.creator }) } + let(:stage) { described_class.new(project: project, options: { from: 2.days.ago, current_user: project.creator }) } before do mr_1.metrics.update!(merged_at: 30.minutes.ago) diff --git a/spec/lib/gitlab/cycle_analytics/shared_event_spec.rb b/spec/lib/gitlab/cycle_analytics/shared_event_spec.rb index 457f3a0c3a7..c22d27f60d6 100644 --- a/spec/lib/gitlab/cycle_analytics/shared_event_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/shared_event_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' shared_examples 'default query config' do let(:project) { create(:project) } - let(:event) { described_class.new(projects: [project], stage: stage_name, options: { from: 1.day.ago }) } + let(:event) { described_class.new(project: project, stage: stage_name, options: { from: 1.day.ago }) } it 'has the stage attribute' do expect(event.stage).not_to be_nil diff --git a/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb index 2293688221a..1a4b572cc11 100644 --- a/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/shared_stage_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' shared_examples 'base stage' do ISSUES_MEDIAN = 30.minutes.to_i - let(:stage) { described_class.new(projects: [double], options: {}) } + let(:stage) { described_class.new(project: double, options: {}) } before do allow(stage).to receive(:median).and_return(1.12) diff --git a/spec/lib/gitlab/cycle_analytics/staging_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/staging_stage_spec.rb index 346566c1514..17d5fbb9733 100644 --- a/spec/lib/gitlab/cycle_analytics/staging_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/staging_stage_spec.rb @@ -14,7 +14,7 @@ describe Gitlab::CycleAnalytics::StagingStage do let(:build_1) { create(:ci_build, project: project) } let(:build_2) { create(:ci_build, project: project) } - let(:stage) { described_class.new(projects: [project], options: { from: 2.days.ago, current_user: project.creator }) } + let(:stage) { described_class.new(project: project, options: { from: 2.days.ago, current_user: project.creator }) } before do mr_1.metrics.update!(merged_at: 80.minutes.ago, first_deployed_to_production_at: 50.minutes.ago, pipeline_id: build_1.commit_id) -- cgit v1.2.1