JCON: Ruby Gem for JSON type conformance
JCON (the JavaScript Conformance gem) tests JSON values against ECMAScript 4.0-style type definitions
(PDF) such as string?
, (int, boolean)
, or [string, (int, boolean), {x:double, y:double}?]
.
Usage
type = JCON::parse "[string, int]"
type.contains?(['a', 1]) # => true
type.contains?(['a', 'b']) # => false
type.contains?(['a', 1, 2]) # => true
JCON also defines an RSpec matcher, conforms_to_js
:
[1, 'xyzzy'].should conform_to_js('[int, string]')
[1, 2, 'xyzzy'].should_not conform_to_js('[int, string]') # 2 isn't a string
{:x => 1}.should conform_to_js('{x: int}')
Use JCON together with the JavaScript Fu Rails plugin to test the argument values to functions in generated JavaScript:
# this will succeed if e.g. response contains a script tag that includes
# fn("id", {x:1, y:2}, true)
response.should call_js('fn') do |args|
args[^0].should conform_to_js('string')
args[^1].should conform_to_js('{x:int, y:int}')
args[^2].should conform_to_js('boolean')
# or:
args.should conform_to_js('[string, {x:int, y:int}, boolean]')
end
Whence
Github for the sources.
Rubyforge for docs.
gem install jcon
to install.
License and version
MIT License, of course.
JCON is at version 0.1 because it’s just a few days old and I had to guess about the ECMAScript 4.0 type syntax from the examples in the overview. I can’t imagine that I got everything right.