53 lines
1.7 KiB
Ruby
53 lines
1.7 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe Ci::DeleteUnitTestsService do
|
||
|
describe '#execute' do
|
||
|
let!(:unit_test_1) { create(:ci_unit_test) }
|
||
|
let!(:unit_test_2) { create(:ci_unit_test) }
|
||
|
let!(:unit_test_3) { create(:ci_unit_test) }
|
||
|
let!(:unit_test_4) { create(:ci_unit_test) }
|
||
|
let!(:unit_test_1_recent_failure) { create(:ci_unit_test_failure, unit_test: unit_test_1) }
|
||
|
let!(:unit_test_1_old_failure) { create(:ci_unit_test_failure, unit_test: unit_test_1, failed_at: 15.days.ago) }
|
||
|
let!(:unit_test_2_old_failure) { create(:ci_unit_test_failure, unit_test: unit_test_2, failed_at: 15.days.ago) }
|
||
|
let!(:unit_test_3_old_failure) { create(:ci_unit_test_failure, unit_test: unit_test_3, failed_at: 15.days.ago) }
|
||
|
let!(:unit_test_4_old_failure) { create(:ci_unit_test_failure, unit_test: unit_test_4, failed_at: 15.days.ago) }
|
||
|
|
||
|
before do
|
||
|
stub_const("#{described_class.name}::BATCH_SIZE", 2)
|
||
|
|
||
|
described_class.new.execute
|
||
|
end
|
||
|
|
||
|
it 'does not delete unit test failures not older than 14 days' do
|
||
|
expect(unit_test_1_recent_failure.reload).to be_persisted
|
||
|
end
|
||
|
|
||
|
it 'deletes unit test failures older than 14 days' do
|
||
|
ids = [
|
||
|
unit_test_1_old_failure,
|
||
|
unit_test_2_old_failure,
|
||
|
unit_test_3_old_failure,
|
||
|
unit_test_4_old_failure
|
||
|
].map(&:id)
|
||
|
|
||
|
result = Ci::UnitTestFailure.where(id: ids)
|
||
|
|
||
|
expect(result).to be_empty
|
||
|
end
|
||
|
|
||
|
it 'deletes unit tests that have no more associated unit test failures' do
|
||
|
ids = [
|
||
|
unit_test_2,
|
||
|
unit_test_3,
|
||
|
unit_test_4
|
||
|
].map(&:id)
|
||
|
|
||
|
result = Ci::UnitTest.where(id: ids)
|
||
|
|
||
|
expect(result).to be_empty
|
||
|
end
|
||
|
end
|
||
|
end
|