1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
require "spec_helper"
require "fog/test_helpers/formats_helper"
require "fog/test_helpers/types_helper"
module Shindo
class Tests
def test(_str, &_block)
yield
end
end
end
describe "formats_helper" do
let(:shindo) { Shindo::Tests.new }
it "comparing welcome data against schema" do
data = { :welcome => "Hello" }
assert shindo.data_matches_schema(:welcome => String) { data }
end
describe "#data_matches_schema" do
it "when value matches schema expectation" do
assert shindo.data_matches_schema("key" => String) { { "key" => "Value" } }
end
it "when values within an array all match schema expectation" do
assert shindo.data_matches_schema("key" => [Integer]) { { "key" => [1, 2] } }
end
it "when nested values match schema expectation" do
assert shindo.data_matches_schema("key" => { :nested_key => String }) { { "key" => { :nested_key => "Value" } } }
end
it "when collection of values all match schema expectation" do
assert shindo.data_matches_schema([{ "key" => String }]) { [{ "key" => "Value" }, { "key" => "Value" }] }
end
it "when collection is empty although schema covers optional members" do
assert shindo.data_matches_schema([{ "key" => String }], :allow_optional_rules => true) { [] }
end
it "when additional keys are passed and not strict" do
assert shindo.data_matches_schema({ "key" => String }, { :allow_extra_keys => true }) { { "key" => "Value", :extra => "Bonus" } }
end
it "when value is nil and schema expects NilClass" do
assert shindo.data_matches_schema("key" => NilClass) { { "key" => nil } }
end
it "when value and schema match as hashes" do
assert shindo.data_matches_schema({}) { {} }
end
it "when value and schema match as arrays" do
assert shindo.data_matches_schema([]) { [] }
end
it "when value is a Time" do
assert shindo.data_matches_schema("time" => Time) { { "time" => Time.now } }
end
it "when key is missing but value should be NilClass (#1477)" do
assert shindo.data_matches_schema({ "key" => NilClass }, { :allow_optional_rules => true }) { {} }
end
it "when key is missing but value is nullable (#1477)" do
assert shindo.data_matches_schema({ "key" => Fog::Nullable::String }, { :allow_optional_rules => true }) { {} }
end
end
describe "#formats backwards compatible changes" do
it "when value matches schema expectation" do
assert shindo.formats("key" => String) { { "key" => "Value" } }
end
it "when values within an array all match schema expectation" do
assert shindo.formats("key" => [Integer]) { { "key" => [1, 2] } }
end
it "when nested values match schema expectation" do
assert shindo.formats("key" => { :nested_key => String }) { { "key" => { :nested_key => "Value" } } }
end
it "when collection of values all match schema expectation" do
assert shindo.formats([{ "key" => String }]) { [{ "key" => "Value" }, { "key" => "Value" }] }
end
it "when collection is empty although schema covers optional members" do
assert shindo.formats([{ "key" => String }]) { [] }
end
it "when additional keys are passed and not strict" do
assert shindo.formats({ "key" => String }, false) { { "key" => "Value", :extra => "Bonus" } }
end
it "when value is nil and schema expects NilClass" do
assert shindo.formats("key" => NilClass) { { "key" => nil } }
end
it "when value and schema match as hashes" do
assert shindo.formats({}) { {} }
end
it "when value and schema match as arrays" do
assert shindo.formats([]) { [] }
end
it "when value is a Time" do
assert shindo.formats("time" => Time) { { "time" => Time.now } }
end
it "when key is missing but value should be NilClass (#1477)" do
assert shindo.formats("key" => NilClass) { {} }
end
it "when key is missing but value is nullable (#1477)" do
assert shindo.formats("key" => Fog::Nullable::String) { {} }
end
end
end
|