56 lines
1.6 KiB
Ruby
56 lines
1.6 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe Gitlab::CrossProjectAccess::CheckCollection do
|
||
|
subject(:collection) { described_class.new }
|
||
|
|
||
|
describe '#add_collection' do
|
||
|
it 'merges the checks of 2 collections' do
|
||
|
initial_check = double('check')
|
||
|
collection.add_check(initial_check)
|
||
|
|
||
|
other_collection = described_class.new
|
||
|
other_check = double('other_check')
|
||
|
other_collection.add_check(other_check)
|
||
|
|
||
|
shared_check = double('shared check')
|
||
|
other_collection.add_check(shared_check)
|
||
|
collection.add_check(shared_check)
|
||
|
|
||
|
collection.add_collection(other_collection)
|
||
|
|
||
|
expect(collection.checks).to contain_exactly(initial_check, shared_check, other_check)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#should_run?' do
|
||
|
def fake_check(run, skip)
|
||
|
check = double("Check: run=#{run} - skip={skip}")
|
||
|
allow(check).to receive(:should_run?).and_return(run)
|
||
|
allow(check).to receive(:should_skip?).and_return(skip)
|
||
|
allow(check).to receive(:skip).and_return(skip)
|
||
|
|
||
|
check
|
||
|
end
|
||
|
|
||
|
it 'returns true if one of the check says it should run' do
|
||
|
check = fake_check(true, false)
|
||
|
other_check = fake_check(false, false)
|
||
|
|
||
|
collection.add_check(check)
|
||
|
collection.add_check(other_check)
|
||
|
|
||
|
expect(collection.should_run?(double)).to be_truthy
|
||
|
end
|
||
|
|
||
|
it 'returns false if one of the check says it should be skipped' do
|
||
|
check = fake_check(true, false)
|
||
|
other_check = fake_check(false, true)
|
||
|
|
||
|
collection.add_check(check)
|
||
|
collection.add_check(other_check)
|
||
|
|
||
|
expect(collection.should_run?(double)).to be_falsey
|
||
|
end
|
||
|
end
|
||
|
end
|