mod util; use schemars::JsonSchema; use util::*; // FIXME determine whether schema_with should be allowed on unit variants fn schema_fn(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { ::json_schema(gen) } #[derive(Debug)] pub struct DoesntImplementJsonSchema; #[derive(Debug, JsonSchema)] #[schemars(rename_all = "camelCase")] pub enum External { Struct { #[schemars(schema_with = "schema_fn")] foo: DoesntImplementJsonSchema, }, NewType(#[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema), Tuple( #[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema, i32, ), // #[schemars(schema_with = "schema_fn")] // Unit, } #[test] fn enum_external_tag() -> TestResult { test_default_generated_schema::("schema_with-enum-external") } #[derive(Debug, JsonSchema)] #[schemars(tag = "typeProperty")] pub enum Internal { Struct { #[schemars(schema_with = "schema_fn")] foo: DoesntImplementJsonSchema, }, NewType(#[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema), // #[schemars(schema_with = "schema_fn")] // Unit, } #[test] fn enum_internal_tag() -> TestResult { test_default_generated_schema::("schema_with-enum-internal") } #[derive(Debug, JsonSchema)] #[schemars(untagged)] pub enum Untagged { Struct { #[schemars(schema_with = "schema_fn")] foo: DoesntImplementJsonSchema, }, NewType(#[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema), Tuple( #[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema, i32, ), // #[schemars(schema_with = "schema_fn")] // Unit, } #[test] fn enum_untagged() -> TestResult { test_default_generated_schema::("schema_with-enum-untagged") } #[derive(Debug, JsonSchema)] #[schemars(tag = "t", content = "c")] pub enum Adjacent { Struct { #[schemars(schema_with = "schema_fn")] foo: DoesntImplementJsonSchema, }, NewType(#[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema), Tuple( #[schemars(schema_with = "schema_fn")] DoesntImplementJsonSchema, i32, ), // #[schemars(schema_with = "schema_fn")] // Unit, } #[test] fn enum_adjacent_tagged() -> TestResult { test_default_generated_schema::("schema_with-enum-adjacent-tagged") }