Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Mazetto <brodock@gmail.com>2017-02-13 14:21:12 +0300
committerGabriel Mazetto <brodock@gmail.com>2017-05-31 15:33:03 +0300
commitbc6d131b74ba4cdf7acadea5a5b7d23f083f47ed (patch)
tree2cff048cee92204e1579957531fa6027e8e8e7db
parenta4460f420bbbac30fbcec3395261c89749b52bbd (diff)
Added specs for SystemCheck and custom matcher
-rw-r--r--lib/system_check.rb7
-rw-r--r--spec/lib/system_check_spec.rb39
-rw-r--r--spec/support/matchers/execute_check.rb19
3 files changed, 65 insertions, 0 deletions
diff --git a/lib/system_check.rb b/lib/system_check.rb
index ba22a40f5af..e9cbf6b8258 100644
--- a/lib/system_check.rb
+++ b/lib/system_check.rb
@@ -15,9 +15,16 @@ module SystemCheck
raise ArgumentError, 'Invalid executor'
end
+ prepare(component, checks, executor_klass).execute
+ end
+
+ def self.prepare(component, checks = [], executor_klass = SimpleExecutor)
executor = executor_klass.new(component)
checks.each do |check|
executor << check
end
+
+ executor
end
+ private_class_method :prepare
end
diff --git a/spec/lib/system_check_spec.rb b/spec/lib/system_check_spec.rb
new file mode 100644
index 00000000000..399a492ea2e
--- /dev/null
+++ b/spec/lib/system_check_spec.rb
@@ -0,0 +1,39 @@
+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
diff --git a/spec/support/matchers/execute_check.rb b/spec/support/matchers/execute_check.rb
new file mode 100644
index 00000000000..9664eb3879d
--- /dev/null
+++ b/spec/support/matchers/execute_check.rb
@@ -0,0 +1,19 @@
+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