json-utils 0.3.5

An utility crate for working with JSON and JSON-schemas
Documentation
use crate::query::Query;

use super::*;

#[test]
fn test_lookup_01() {
    let schema = test_schema();

    assert_eq!(schema.lookup("a_null/nothing"), None);
    assert_eq!(
        schema.lookup("a_null").map(|ref qn| qn.schema),
        Some(&SchemaNode::null().into())
    );
    assert_eq!(schema.lookup("").map(|ref qn| qn.schema), Some(&schema));
    assert_eq!(
        schema.lookup("an_object/a_string").map(|ref qn| qn.schema),
        Some(&SchemaNode::string().into())
    );
}

fn test_schema() -> SchemaNode {
    SchemaNode::object()
        .add_property("a_null", SchemaNode::null())
        .add_property("a_string", SchemaNode::string())
        .add_property("a_boolean", SchemaNode::boolean())
        .add_property("a_number", SchemaNode::number())
        .add_property("an_integer", SchemaNode::integer())
        .add_property("an_array", SchemaNode::array(SchemaNode::integer()))
        .add_property(
            "an_object",
            SchemaNode::object()
                .add_property("a_null", SchemaNode::null())
                .add_property("a_string", SchemaNode::string())
                .add_property("a_boolean", SchemaNode::boolean())
                .add_property("a_number", SchemaNode::number())
                .add_property("an_integer", SchemaNode::integer())
                .add_property("an_array", SchemaNode::array(SchemaNode::string()))
                .add_required("a_boolean")
                .add_required("a_number"),
        )
        .add_required("a_string")
        .add_required("an_object")
        .into()
}