diff options
author | Małgorzata Ksionek <mksionek@gitlab.com> | 2019-06-25 13:09:21 +0200 |
---|---|---|
committer | Małgorzata Ksionek <mksionek@gitlab.com> | 2019-06-25 13:09:21 +0200 |
commit | 68b6a28d2d2d718ee64c9d4d591e62209cc69f61 (patch) | |
tree | cc9f86bbcc6d213ede5a3045bd05ca2c9bc50696 | |
parent | 17b68ee56cac064ce8912fc933629ca679021231 (diff) | |
download | gitlab-ce-12077-move-cycle-analytics-to-group-level-ce.tar.gz |
Add first group related specs12077-move-cycle-analytics-to-group-level-ce
-rw-r--r-- | lib/gitlab/cycle_analytics/base_event_fetcher.rb | 2 | ||||
-rw-r--r-- | spec/lib/gitlab/cycle_analytics/review_stage_spec.rb | 44 |
2 files changed, 45 insertions, 1 deletions
diff --git a/lib/gitlab/cycle_analytics/base_event_fetcher.rb b/lib/gitlab/cycle_analytics/base_event_fetcher.rb index f2a0a9c4b7b..2c8ecabb11f 100644 --- a/lib/gitlab/cycle_analytics/base_event_fetcher.rb +++ b/lib/gitlab/cycle_analytics/base_event_fetcher.rb @@ -68,7 +68,7 @@ module Gitlab end def allowed_ids_source - { project_id: @project.id } + group ? { group_id: group.id } : { project_id: @project.id } end def serialization_context diff --git a/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb b/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb index f072a9644e8..1c7e6f5e063 100644 --- a/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/review_stage_spec.rb @@ -42,4 +42,48 @@ describe Gitlab::CycleAnalytics::ReviewStage do expect(result.map { |event| event[:title] }).to contain_exactly(mr_1.title, mr_2.title) end end + + context 'when group is given' do + let(:user) { create(:user) } + let(:group) { create(:group) } + let(:project_2) { create(:project, group: group) } + let(:project_3) { create(:project, group: group) } + let!(:issue_2_1) { create(:issue, project: project_2, created_at: 90.minutes.ago) } + let!(:issue_2_2) { create(:issue, project: project_3, created_at: 60.minutes.ago) } + let!(:issue_2_3) { create(:issue, project: project_2, created_at: 60.minutes.ago) } + let!(:mr_2_1) { create(:merge_request, :closed, source_project: project_2, created_at: 60.minutes.ago) } + let!(:mr_2_2) { create(:merge_request, :closed, source_project: project_3, created_at: 40.minutes.ago, source_branch: 'A') } + let!(:mr_2_3) { create(:merge_request, source_project: project_2, created_at: 10.minutes.ago, source_branch: 'B') } + let!(:mr_4_4) { create(:merge_request, source_project: project_3, created_at: 10.minutes.ago, source_branch: 'C') } + let(:stage) { described_class.new(options: { from: 2.days.ago, current_user: user, group: group }) } + + before do + group.add_owner(user) + mr_2_1.metrics.update!(merged_at: 30.minutes.ago) + mr_2_2.metrics.update!(merged_at: 10.minutes.ago) + + create(:merge_requests_closing_issues, merge_request: mr_2_1, issue: issue_2_1) + create(:merge_requests_closing_issues, merge_request: mr_2_2, issue: issue_2_2) + create(:merge_requests_closing_issues, merge_request: mr_2_3, issue: issue_2_3) + end + + describe '#group_median' do + around do |example| + Timecop.freeze { example.run } + end + + it 'counts median from issues with metrics' do + expect(stage.group_median).to eq(ISSUES_MEDIAN) + end + end + + describe '#events' do + it 'exposes merge requests that close issues' do + result = stage.events + + expect(result.count).to eq(2) + expect(result.map { |event| event[:title] }).to contain_exactly(mr_2_1.title, mr_2_2.title) + end + end + end end |