Commit bc6d131b authored by Gabriel Mazetto's avatar Gabriel Mazetto

Added specs for SystemCheck and custom matcher

parent a4460f42
...@@ -15,9 +15,16 @@ module SystemCheck ...@@ -15,9 +15,16 @@ module SystemCheck
raise ArgumentError, 'Invalid executor' raise ArgumentError, 'Invalid executor'
end end
prepare(component, checks, executor_klass).execute
end
def self.prepare(component, checks = [], executor_klass = SimpleExecutor)
executor = executor_klass.new(component) executor = executor_klass.new(component)
checks.each do |check| checks.each do |check|
executor << check executor << check
end end
executor
end end
private_class_method :prepare
end end
require 'spec_helper'
describe SystemCheck, lib: true do
subject { SystemCheck }
describe '.run' do
it 'requires custom executor to be a BasicExecutor' do
expect { subject.run('Component', [], SystemCheck::SimpleExecutor) }.not_to raise_error
end
context 'custom matcher' do
class SimpleCheck < SystemCheck::BaseCheck
def check?
true
end
end
class OtherCheck < SystemCheck::BaseCheck
def check?
false
end
end
subject { SystemCheck }
it 'detects execution of SimpleCheck' do
is_expected.to execute_check(SimpleCheck)
SystemCheck.run('Test', [SimpleCheck])
end
it 'detects exclusion of OtherCheck in execution' do
is_expected.not_to execute_check(OtherCheck)
SystemCheck.run('Test', [SimpleCheck])
end
end
end
end
RSpec::Matchers.define :execute_check do |expected|
match do |actual|
expect(actual).to eq(SystemCheck)
expect(actual).to receive(:run) do |*args|
expect(args[1]).to include(expected)
end
end
match_when_negated do |actual|
expect(actual).to eq(SystemCheck)
expect(actual).to receive(:run) do |*args|
expect(args[1]).not_to include(expected)
end
end
failure_message do |actual|
return 'This matcher must be used with SystemCheck' unless actual == SystemCheck
end
end
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