use std::{fs::File, io::BufReader, path::Path};
use schemars::schema::RootSchema;
use typify_impl::{TypeSpace, TypeSpaceImpl, TypeSpaceSettings};
#[test]
fn test_github() {
let mut type_space = TypeSpace::default();
let path = Path::new("tests/github.json");
let file = File::open(path).unwrap();
let reader = BufReader::new(file);
let mut schema: RootSchema = serde_json::from_reader(reader).unwrap();
schema.schema.metadata().title = Some("Everything".to_string());
type_space.add_root_schema(schema).unwrap();
let file = type_space.to_stream();
let fmt = rustfmt_wrapper::rustfmt(file.to_string()).unwrap();
expectorate::assert_contents("tests/github.out", fmt.as_str());
}
#[test]
fn test_vega() {
env_logger::init();
let mut settings = TypeSpaceSettings::default();
let raw_schema = serde_json::json!(
{
"enum": [
null,
"normal",
"bold",
"lighter",
"bolder",
"100",
"200",
"300",
"400",
"500",
"600",
"700",
"800",
"900",
100,
200,
300,
400,
500,
600,
700,
800,
900
]
}
);
let schema = serde_json::from_value(raw_schema).unwrap();
settings
.with_conversion(schema, "MyEnum", [TypeSpaceImpl::FromStr].into_iter())
.with_replacement("ColorValue", "ColorValue", [].into_iter());
let mut type_space = TypeSpace::new(&settings);
let path = Path::new("tests/vega.json");
let file = File::open(path).unwrap();
let reader = BufReader::new(file);
let mut schema: RootSchema = serde_json::from_reader(reader).unwrap();
schema.schema.metadata().title = Some("Everything".to_string());
type_space.add_root_schema(schema).unwrap();
let file = type_space.to_stream();
let fmt = rustfmt_wrapper::rustfmt(file.to_string()).unwrap();
expectorate::assert_contents("tests/vega.out", fmt.as_str());
}