From aeda40eb8c38e0be2ee90413dfa6e47bb28d648f Mon Sep 17 00:00:00 2001 From: Maxime Orefice <morefice@gitlab.com> Date: Thu, 17 Oct 2024 15:29:02 +0200 Subject: [PATCH] Add upcoming_milestones helper This commit introduces a new method to get upcoming milestones from a given date. This will be used to schedule migration in n+3 milestone. --- keeps/helpers/milestones.rb | 4 ++++ spec/keeps/helpers/milestones_spec.rb | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/keeps/helpers/milestones.rb b/keeps/helpers/milestones.rb index dee9f8e13cf6c..c4c0691855692 100644 --- a/keeps/helpers/milestones.rb +++ b/keeps/helpers/milestones.rb @@ -15,6 +15,10 @@ def past_milestone(milestones_ago:) milestones[current_milestone_index + milestones_ago].version end + def upcoming_milestones + milestones.select { |milestone| Date.parse(milestone.date).future? }.reverse + end + private def current_milestone diff --git a/spec/keeps/helpers/milestones_spec.rb b/spec/keeps/helpers/milestones_spec.rb index 991f15abd457f..dc8b793d89b42 100644 --- a/spec/keeps/helpers/milestones_spec.rb +++ b/spec/keeps/helpers/milestones_spec.rb @@ -124,4 +124,17 @@ it { is_expected.to eq(true) } end end + + describe '#upcoming_milestone', time_travel_to: '2024-04-17' do + subject(:upcoming_milestones) { described_class.new.upcoming_milestones } + + it 'returns milestones in the future' do + expected_milestones = [ + described_class::Milestone.new(version: '16.11', date: '2024-04-18'), + described_class::Milestone.new(version: '17.0', date: '2024-05-16') + ] + + expect(upcoming_milestones).to contain_exactly(*expected_milestones) + end + end end -- GitLab