class Shindo::Tests
Public Instance Methods
data_matches_schema(schema, options = {}) { || ... }
click to toggle source
Generates a Shindo
test that compares a hash schema to the result of the passed in block returning true if they match.
The schema that is passed in is a Hash or Array of hashes that have Classes in place of values. When checking the schema the value should match the Class.
Strict mode will fail if the data has additional keys. Setting strict
to false
will allow additional keys to appear.
@param [Hash] schema A Hash schema @param [Hash] options Options to change validation rules @option options [Boolean] :allow_extra_keys
If +true+ does not fail when keys are in the data that are not specified in the schema. This allows new values to appear in API output without breaking the check.
@option options [Boolean] :allow_optional_rules
If +true+ does not fail if extra keys are in the schema that do not match the data. Not recommended!
@yield Data to check with schema
@example Using in a test
Shindo.tests("comparing welcome data against schema") do data = {:welcome => "Hello" } data_matches_schema(:welcome => String) { data } end comparing welcome data against schema + data matches schema
@example Example schema
{ "id" => String, "ram" => Integer, "disks" => [ { "size" => Float } ], "dns_name" => Fog::Nullable::String, "active" => Fog::Boolean, "created" => DateTime }
@return [Boolean]
# File lib/fog/test_helpers/formats_helper.rb, line 50 def data_matches_schema(schema, options = {}) test("data matches schema") do validator = Fog::Schema::DataValidator.new valid = validator.validate(yield, schema, options) @message = validator.message unless valid valid end end
formats(format, strict = true) { || ... }
click to toggle source
@deprecated formats
is deprecated. Use data_matches_schema
instead
# File lib/fog/test_helpers/formats_helper.rb, line 60 def formats(format, strict = true) test("has proper format") do if strict options = { :allow_extra_keys => false, :allow_optional_rules => true } else options = { :allow_extra_keys => true, :allow_optional_rules => true } end validator = Fog::Schema::DataValidator.new valid = validator.validate(yield, format, options) @message = validator.message unless valid valid end end
responds_to(method_names)
click to toggle source
# File lib/fog/test_helpers/responds_to_helper.rb, line 3 def responds_to(method_names) method_names.each do |method_name| tests("#respond_to?(:#{method_name})").returns(true) do @instance.respond_to?(method_name) end end end
succeeds(&block)
click to toggle source
# File lib/fog/test_helpers/succeeds_helper.rb, line 3 def succeeds(&block) test("succeeds") do !!instance_eval(&block) end end