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_schema_definition_basic() {
    let schema = r#"
        schema {
            query: Query
        }
    "#;

    let new_ast = parse_with_graphqlschemaparser(schema);
    let ref_ast = parse_with_graphql_parser(schema);

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

    match (&new_ast.definitions[0], &ref_ast.definitions[0]) {
        (
            ast::schema::Definition::SchemaDefinition(new_schema),
            ast::schema::Definition::SchemaDefinition(ref_schema),
        ) => {
            assert_eq!(new_schema.query, ref_schema.query);
            assert_eq!(new_schema.query, Some("Query".to_string()));
        }
        _ => panic!("Expected schema definitions"),
    }
}

#[test]
fn test_schema_definition_full() {
    let schema = r#"
        schema {
            query: Query
            mutation: Mutation
            subscription: Subscription
        }
    "#;

    let new_ast = parse_with_graphqlschemaparser(schema);
    let ref_ast = parse_with_graphql_parser(schema);

    match (&new_ast.definitions[0], &ref_ast.definitions[0]) {
        (
            ast::schema::Definition::SchemaDefinition(new_schema),
            ast::schema::Definition::SchemaDefinition(ref_schema),
        ) => {
            assert_eq!(new_schema.query, ref_schema.query);
            assert_eq!(new_schema.mutation, ref_schema.mutation);
            assert_eq!(new_schema.subscription, ref_schema.subscription);
        }
        _ => panic!("Expected schema definitions"),
    }
}