Skip to content

Release 2.2.4 #62

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/models/check_suite.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CheckSuite < ActiveRecord::Base
has_many :stages, dependent: :delete_all
has_many :audit_retries, dependent: :delete_all

default_scope -> { order(id: :asc) }, all_queries: true

def finished?
!running?
end
Expand Down
2 changes: 2 additions & 0 deletions lib/models/ci_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ class CiJob < ActiveRecord::Base
scope :not_skipped, -> { where.not(status: 'skipped') }
scope :failure, -> { where(status: %i[failure cancelled skipped]) }

default_scope -> { order(id: :asc) }, all_queries: true

def finished?
!%w[queued in_progress].include?(status)
end
Expand Down
15 changes: 8 additions & 7 deletions lib/models/pull_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,18 @@ class PullRequest < ActiveRecord::Base
has_many :check_suites, dependent: :delete_all
has_many :pull_request_subscriptions, dependent: :delete_all

def new?
check_suites.nil? or check_suites.empty?
end

def finished?
return true if new?
return true if check_suites.nil? or check_suites.empty?

check_suites.last.finished?
current_execution.finished?
end

def current_execution?(check_suite)
check_suites.last == check_suite
current_execution == check_suite
end

# @return [CheckSuite]
def current_execution
check_suites.order(id: :asc).last
end
end
2 changes: 2 additions & 0 deletions lib/models/stage.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ class Stage < ActiveRecord::Base
belongs_to :configuration, class_name: 'StageConfiguration', foreign_key: 'stage_configuration_id'
belongs_to :check_suite

default_scope -> { order(id: :asc) }, all_queries: true

def running?
jobs.where(status: %i[queued in_progress]).any?
end
Expand Down
29 changes: 19 additions & 10 deletions spec/lib/models/pull_request_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,44 @@
# frozen_string_literal: true

describe PullRequest do
context 'when create a new PR' do
context 'when create a new PR and check if check suite was finished' do
let(:pull_request) { create(:pull_request) }

it 'must return true' do
expect(pull_request.new?).to be_truthy
expect(pull_request.finished?).to be_truthy
end
end

context 'when create a new PR with Check Suite' do
context 'when create a new PR and check if check suite was finished' do
let(:pull_request) { create(:pull_request, :with_check_suite) }

it 'must return true' do
expect(pull_request.new?).to be_falsey
expect(pull_request.finished?).to be_falsey
end
end

context 'when create a new PR and check if check suite was finished' do
context 'when current execution is not the last check suite' do
let(:pull_request) { create(:pull_request) }
let(:check_suite1) { create(:check_suite, pull_request: pull_request) }
let(:check_suite2) { create(:check_suite, pull_request: pull_request) }
let(:check_suite3) { create(:check_suite, pull_request: pull_request) }

before do
check_suite1
check_suite2
check_suite3
end

it 'must return true' do
expect(pull_request.finished?).to be_truthy
expect(pull_request.current_execution?(check_suite3)).to be_truthy
end
end

context 'when create a new PR and check if check suite was finished' do
let(:pull_request) { create(:pull_request, :with_check_suite) }
context 'when current execution is nil' do
let(:pull_request) { create(:pull_request) }

it 'must return true' do
expect(pull_request.finished?).to be_falsey
it 'must return true in finished?' do
expect(pull_request.finished?).to be_truthy
end
end
end
Loading