bluejay-printer 0.3.1

A GraphQL printer
Documentation
use bluejay_parser::ast::{
    definition::{DefinitionDocument, SchemaDefinition},
    executable::ExecutableDocument,
    Parse,
};
use bluejay_printer::{definition::SchemaDefinitionPrinter, executable::ExecutableDocumentPrinter};
use similar_asserts::assert_eq;

#[test]
fn test_definition_printer() {
    let s = std::fs::read_to_string("../data/schema.docs.graphql").unwrap();
    let original_document: DefinitionDocument = DefinitionDocument::parse(s.as_str()).unwrap();
    let original_schema_definition = SchemaDefinition::try_from(&original_document).unwrap();

    let printed = SchemaDefinitionPrinter::to_string(&original_schema_definition);
    insta::assert_snapshot!(printed);

    let printed_document: DefinitionDocument = DefinitionDocument::parse(printed.as_str()).unwrap();
    let printed_schema_definition = SchemaDefinition::try_from(&printed_document).unwrap();
    let reprinted = SchemaDefinitionPrinter::to_string(&printed_schema_definition);

    assert_eq!(
        original_document.definition_count(),
        printed_document.definition_count()
    );
    similar_asserts::assert_eq!(printed, reprinted);
}

#[test]
fn test_executable_printer() {
    insta::glob!("test_data/*.graphql", |path| {
        let input = std::fs::read_to_string(path).unwrap();
        let executable_document = ExecutableDocument::parse(input.as_str())
            .unwrap_or_else(|_| panic!("Document `{}` had parse errors", path.display()));
        let printed = ExecutableDocumentPrinter::to_string(&executable_document);
        assert_eq!(input, printed);
    });
}