diff --git a/ee/app/models/gitlab_subscription.rb b/ee/app/models/gitlab_subscription.rb index 87674076fec005db021afa551e2a544bcbcb8855..08ef366f03815164612e1b75942b146a1557b3cd 100644 --- a/ee/app/models/gitlab_subscription.rb +++ b/ee/app/models/gitlab_subscription.rb @@ -44,8 +44,10 @@ class GitlabSubscription < ApplicationRecord end scope :requiring_seat_refresh, -> (limit) do + # look for subscriptions that have not been refreshed in more than + # 18 hours (catering for 6-hourly refresh schedule) with_a_paid_hosted_plan - .where("last_seat_refresh_at < ? OR last_seat_refresh_at IS NULL", 24.hours.ago) + .where("last_seat_refresh_at < ? OR last_seat_refresh_at IS NULL", 18.hours.ago) .limit(limit) end diff --git a/ee/spec/models/gitlab_subscription_spec.rb b/ee/spec/models/gitlab_subscription_spec.rb index ae18d252b9d45cdddf5529f89a09f1cc04e239a0..68f78972bd6b190feee17590daf2b99383e0c789 100644 --- a/ee/spec/models/gitlab_subscription_spec.rb +++ b/ee/spec/models/gitlab_subscription_spec.rb @@ -68,10 +68,12 @@ let_it_be(:ultimate_subscription) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: nil) } let_it_be(:ultimate_subscription_12_hours) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: 12.hours.ago) } let_it_be(:ultimate_subscription_2_days) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: 2.days.ago) } + let_it_be(:ultimate_subscription_24_hours) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: 24.hours.ago) } let_it_be(:premium_subscription) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: nil) } let_it_be(:premium_subscription_12_hours) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: 12.hours.ago) } let_it_be(:premium_subscription_2_days) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: 2.days.ago) } + let_it_be(:premium_subscription_24_hours) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: 24.hours.ago) } let_it_be(:free_subscription) { create(:gitlab_subscription, :free, last_seat_refresh_at: 2.days.ago) } let_it_be(:trial_subscription) { create(:gitlab_subscription, hosted_plan: ultimate_plan, trial: true, last_seat_refresh_at: 2.days.ago) } @@ -80,11 +82,13 @@ matching_subscriptions = [ ultimate_subscription, ultimate_subscription_2_days, + ultimate_subscription_24_hours, premium_subscription, - premium_subscription_2_days + premium_subscription_2_days, + premium_subscription_24_hours ] - expect(described_class.requiring_seat_refresh(4)) + expect(described_class.requiring_seat_refresh(6)) .to match_array(matching_subscriptions) end