cynic-codegen 3.13.2

Procedural macro code generation for cynic - a code first GraphQL client for Rust
Documentation
use std::{io::Write, path::PathBuf, process::Stdio};

use insta::assert_snapshot;
use rstest::rstest;

use cynic_codegen::use_schema::{UseSchemaParams, use_schema};

fn format_code(input: String) -> String {
    let mut cmd = std::process::Command::new("rustfmt")
        .stdin(Stdio::piped())
        .stdout(Stdio::piped())
        .stderr(Stdio::inherit())
        .spawn()
        .expect("failed to execute rustfmt");

    write!(cmd.stdin.as_mut().unwrap(), "{}", input).unwrap();

    std::str::from_utf8(&cmd.wait_with_output().unwrap().stdout)
        .unwrap()
        .to_owned()
}

#[rstest(schema_file => [
    "graphql.jobs.graphql",
    "books.graphql",
    "starwars.schema.graphql",
    "test_cases.graphql",
    "../schemas/simple.graphql",
])]
fn snapshot_use_schema_two(schema_file: &str) {
    let schema_path = PathBuf::from("../schemas/").join(schema_file);

    let tokens = use_schema(UseSchemaParams {
        schema_filename: schema_path.to_str().unwrap().to_string(),
    })
    .unwrap();

    let snapshot_name = std::path::Path::new(schema_file)
        .file_name()
        .and_then(|s| s.to_str())
        .unwrap();

    assert_snapshot!(snapshot_name, format_code(format!("{}", tokens)));
}