Commit 27e1a6a5 authored by Terri Chu's avatar Terri Chu

Merge branch 'scheduled-at-before-scope' into 'master'

Add scheduled_at_before scope to CommitStatus

See merge request gitlab-org/gitlab!71236
parents e44c0183 e36c03cd
......@@ -62,6 +62,9 @@ class CommitStatus < Ci::ApplicationRecord
scope :updated_before, ->(lookback:, timeout:) {
where('(ci_builds.created_at BETWEEN ? AND ?) AND (ci_builds.updated_at BETWEEN ? AND ?)', lookback, timeout, lookback, timeout)
}
scope :scheduled_at_before, ->(date) {
where('ci_builds.scheduled_at IS NOT NULL AND ci_builds.scheduled_at < ?', date)
}
# The scope applies `pluck` to split the queries. Use with care.
scope :for_project_paths, -> (paths) do
......
......@@ -16,10 +16,7 @@ module Ci
private
def scheduled_timed_out_builds
Ci::Build.where(status: :scheduled).where( # rubocop: disable CodeReuse/ActiveRecord
'ci_builds.scheduled_at IS NOT NULL AND ci_builds.scheduled_at < ?',
BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago
)
Ci::Build.scheduled.scheduled_at_before(BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago)
end
end
end
......
......@@ -123,6 +123,16 @@ RSpec.describe CommitStatus do
end
end
describe '.scheduled_at_before' do
let!(:never_scheduled) { create(:commit_status) }
let!(:stale_scheduled) { create(:commit_status, scheduled_at: 1.day.ago) }
let!(:fresh_scheduled) { create(:commit_status, scheduled_at: 1.minute.ago) }
subject { CommitStatus.scheduled_at_before(1.hour.ago) }
it { is_expected.to contain_exactly(stale_scheduled) }
end
describe '#processed' do
subject { commit_status.processed }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment