From ecea68eec542c77e3faa086fb740050f91287066 Mon Sep 17 00:00:00 2001 From: Patrick Derichs <pderichs@gitlab.com> Date: Thu, 14 May 2020 16:05:53 +0200 Subject: [PATCH] Add #parent method to milestone --- app/models/milestone.rb | 8 ++++++++ ee/app/services/burnup_chart_service.rb | 10 +--------- spec/models/milestone_spec.rb | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/models/milestone.rb b/app/models/milestone.rb index da6490611fde6..0420aa90f526e 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -170,6 +170,14 @@ def author_id alias_method :group_milestone?, :group_timebox? alias_method :project_milestone?, :project_timebox? + def parent + if group_milestone? + group + else + project + end + end + private def milestone_format_reference(format = :iid) diff --git a/ee/app/services/burnup_chart_service.rb b/ee/app/services/burnup_chart_service.rb index 31f427253d044..f42a95aec5b5a 100644 --- a/ee/app/services/burnup_chart_service.rb +++ b/ee/app/services/burnup_chart_service.rb @@ -41,15 +41,7 @@ def execute attr_reader :milestone, :start_date, :due_date, :end_date, :user def can_read_milestone? - Ability.allowed?(user, :read_milestone, milestone_parent) - end - - def milestone_parent - if milestone.group_milestone? - milestone.group - else - milestone.project - end + Ability.allowed?(user, :read_milestone, milestone.parent) end def handle_added_milestone(event, assigned_milestones) diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb index 9aaaf536351e6..e51108947a7ae 100644 --- a/spec/models/milestone_spec.rb +++ b/spec/models/milestone_spec.rb @@ -480,4 +480,22 @@ it { is_expected.not_to match("#{Gitlab.config.gitlab.url}/gitlab-org/gitlab-foss/issues/123") } it { is_expected.not_to match("gitlab-org/gitlab-ce/milestones/123") } end + + describe '#parent' do + context 'with group' do + it 'returns the expected parent' do + group = create(:group) + + expect(build(:milestone, group: group).parent).to eq(group) + end + end + + context 'with project' do + it 'returns the expected parent' do + project = create(:project) + + expect(build(:milestone, project: project).parent).to eq(project) + end + end + end end -- GitLab