committee 0.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,20 +79,22 @@ module Committee
79
79
  end
80
80
  end
81
81
 
82
- def check_type(types, value, key)
83
- type = case value
82
+ def check_type(allowed_types, value, key)
83
+ types = case value
84
84
  when NilClass
85
- "null"
85
+ ["null"]
86
86
  when TrueClass, FalseClass
87
- "boolean"
88
- when Bignum, Fixnum, Float
89
- "number"
87
+ ["boolean"]
88
+ when Bignum, Fixnum
89
+ ["integer", "number"]
90
+ when Float
91
+ ["number"]
90
92
  when String
91
- "string"
93
+ ["string"]
92
94
  else
93
- "unknown"
95
+ ["unknown"]
94
96
  end
95
- types.include?(type)
97
+ !(allowed_types & types).empty?
96
98
  end
97
99
 
98
100
  def check_type!(types, value, key)
@@ -81,26 +81,24 @@ module Committee
81
81
  end
82
82
  end
83
83
 
84
- def check_type!(types, value, path)
85
- type = case value
84
+ def check_type!(allowed_types, value, path)
85
+ types = case value
86
86
  when NilClass
87
- "null"
87
+ ["null"]
88
88
  when TrueClass, FalseClass
89
- "boolean"
90
- when Bignum, Fixnum, Float
91
- "number"
89
+ ["boolean"]
90
+ when Bignum, Fixnum
91
+ ["integer", "number"]
92
+ when Float
93
+ ["number"]
92
94
  when String
93
- "string"
94
- when Hash
95
- "object"
96
- when Array
97
- "array"
95
+ ["string"]
98
96
  else
99
- "unknown"
97
+ ["unknown"]
100
98
  end
101
- unless types.include?(type)
99
+ if (allowed_types & types).empty?
102
100
  raise InvalidResponse,
103
- %{Invalid type at "#{path.join(":")}": expected #{value} to be #{types} (was: #{type}).}
101
+ %{Invalid type at "#{path.join(":")}": expected #{value} to be #{allowed_types} (was: #{types}).}
104
102
  end
105
103
  end
106
104
 
@@ -44,7 +44,7 @@ describe Committee::ResponseValidator do
44
44
  it "detects mismatched types" do
45
45
  @data.merge!("maintenance" => "not-bool")
46
46
  e = assert_raises(Committee::InvalidResponse) { call }
47
- message = %{Invalid type at "maintenance": expected not-bool to be ["boolean"] (was: string).}
47
+ message = %{Invalid type at "maintenance": expected not-bool to be ["boolean"] (was: ["string"]).}
48
48
  assert_equal message, e.message
49
49
  end
50
50
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: committee
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-01-15 00:00:00.000000000 Z
13
+ date: 2014-02-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: multi_json
@@ -124,7 +124,7 @@ files:
124
124
  - test/schema_test.rb
125
125
  - test/test_helper.rb
126
126
  - bin/committee-stub
127
- homepage: https://github.com/brandur/rack-committee
127
+ homepage: https://github.com/heroku/rack-committee
128
128
  licenses:
129
129
  - MIT
130
130
  post_install_message:
@@ -145,9 +145,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  requirements: []
147
147
  rubyforge_project:
148
- rubygems_version: 1.8.23
148
+ rubygems_version: 1.8.24
149
149
  signing_key:
150
150
  specification_version: 3
151
151
  summary: A collection of middleware to support JSON Schema.
152
152
  test_files: []
153
- has_rdoc: