libgraphql-macros 0.0.10

Macros provided by the `libgraphql` crate at `libgraphql::macros`.
Documentation
use crate::tests::graphql_schema_parser::ast_equivalence::utils::parse_with_graphql_parser;
use crate::tests::graphql_schema_parser::ast_equivalence::utils::parse_with_graphqlschemaparser;
use libgraphql_core::ast;

#[test]
fn test_scalar_with_description() {
    let schema = r#""""A custom scalar for dates"""
scalar DateTime"#;
    let new_ast = parse_with_graphqlschemaparser(schema);
    let ref_ast = parse_with_graphql_parser(schema);

    assert_eq!(new_ast.definitions.len(), ref_ast.definitions.len());
    assert_eq!(new_ast.definitions.len(), 1);

    match (&new_ast.definitions[0], &ref_ast.definitions[0]) {
        (
            ast::schema::Definition::TypeDefinition(ast::schema::TypeDefinition::Scalar(new_scalar)),
            ast::schema::Definition::TypeDefinition(ast::schema::TypeDefinition::Scalar(ref_scalar)),
        ) => {
            assert_eq!(new_scalar.name, ref_scalar.name);
            assert_eq!(new_scalar.description, ref_scalar.description);
            assert_eq!(new_scalar.description, Some("A custom scalar for dates".to_string()));
        }
        _ => panic!("Expected scalar type definition"),
    }
}

#[test]
fn test_object_with_description() {
    let schema = r#""""Represents a user in the system"""
type User {
    id: ID
}"#;
    let new_ast = parse_with_graphqlschemaparser(schema);
    let ref_ast = parse_with_graphql_parser(schema);

    assert_eq!(new_ast.definitions.len(), ref_ast.definitions.len());

    match (&new_ast.definitions[0], &ref_ast.definitions[0]) {
        (
            ast::schema::Definition::TypeDefinition(ast::schema::TypeDefinition::Object(new_obj)),
            ast::schema::Definition::TypeDefinition(ast::schema::TypeDefinition::Object(ref_obj)),
        ) => {
            assert_eq!(new_obj.name, ref_obj.name);
            assert_eq!(new_obj.description, ref_obj.description);
            assert_eq!(new_obj.description, Some("Represents a user in the system".to_string()));
        }
        _ => panic!("Expected object type definition"),
    }
}

#[test]
fn test_field_with_description() {
    let schema = r###"type User {
    """The user's unique identifier"""
    id: ID
}"###;
    let new_ast = parse_with_graphqlschemaparser(schema);
    let ref_ast = parse_with_graphql_parser(schema);

    assert_eq!(new_ast.definitions.len(), ref_ast.definitions.len());

    match (&new_ast.definitions[0], &ref_ast.definitions[0]) {
        (
            ast::schema::Definition::TypeDefinition(ast::schema::TypeDefinition::Object(new_obj)),
            ast::schema::Definition::TypeDefinition(ast::schema::TypeDefinition::Object(ref_obj)),
        ) => {
            assert_eq!(new_obj.fields.len(), ref_obj.fields.len());
            assert_eq!(new_obj.fields[0].description, ref_obj.fields[0].description);
            assert_eq!(new_obj.fields[0].description, Some("The user's unique identifier".to_string()));
        }
        _ => panic!("Expected object type definition"),
    }
}