use crate::prelude::*; use pretty_assertions::assert_eq; #[derive(JsonSchema, Deserialize, Serialize, Default)] struct SimpleStruct { foo: i32, } #[derive(JsonSchema, Deserialize, Serialize, Default)] #[schemars(rename = "new-name")] struct RenamedSimpleStruct { foo: i32, } #[test] fn simple() { test!(SimpleStruct) .custom(|schema, _| assert_eq!(schema.get("title"), Some(&"SimpleStruct".into()))); test!(RenamedSimpleStruct) .custom(|schema, _| assert_eq!(schema.get("title"), Some(&"new-name".into()))); } #[derive(JsonSchema, Deserialize, Serialize, Default)] struct TypeParams { t: T, u: U, v: V, w: W, } #[derive(JsonSchema, Deserialize, Serialize, Default)] #[schemars(rename = "new name~{W}/{T}/{T}!")] struct RenamedTypeParams { t: T, u: U, v: V, w: W, } #[test] fn type_params() { test!(TypeParams) .assert_allows_ser_roundtrip_default() .assert_identical::, bool, ()>>(); assert_ne!( >::schema_id(), >::schema_id() ); test!(RenamedTypeParams) .assert_allows_ser_roundtrip_default() .assert_identical::, bool, ()>>() .custom(|schema, _| { assert_eq!( schema.get("title"), Some(&"new name~null/uint8/uint8!".into()) ) }); assert_ne!( >::schema_id(), >::schema_id() ); test!(( TypeParams, RenamedTypeParams )) .assert_allows_ser_roundtrip_default() .custom(|schema, _| { assert_eq!( schema.pointer("/prefixItems/1/$ref"), Some(&("#/$defs/new%20name~0null~1uint8~1uint8!".into())), "name should be correctly encoded for $ref value" ) }); } #[derive(JsonSchema, Deserialize, Serialize, Default)] struct ConstGeneric { #[schemars(range(max = INT))] foo: i32, } #[derive(JsonSchema, Deserialize, Serialize, Default)] #[schemars(rename = "{{new-name-{INT}}}")] struct RenamedConstGeneric { #[schemars(range(max = INT))] foo: i32, } #[test] fn const_generics() { test!(ConstGeneric<123, 'X'>).assert_allows_ser_roundtrip_default(); assert_ne!( >::schema_id(), >::schema_id() ); test!(RenamedConstGeneric<123, 'X'>) .assert_allows_ser_roundtrip_default() .custom(|schema, _| assert_eq!(schema.get("title"), Some(&"{new-name-123}".into()))); assert_ne!( >::schema_id(), >::schema_id() ); }