Files
2026-08-01 16:11:49 +03:00

57 lines
1.5 KiB
Rust

use crate::prelude::*;
#[derive(JsonSchema, Deserialize, Serialize, Default)]
#[serde(transparent)]
pub struct TransparentStruct {
inner: String,
}
#[test]
fn transparent_struct() {
test!(TransparentStruct)
.assert_identical::<String>()
.assert_allows_ser_roundtrip_default()
.assert_matches_de_roundtrip(arbitrary_values());
}
#[derive(JsonSchema, Deserialize, Serialize, Default)]
#[serde(transparent)]
/// A doc comment
pub struct TransparentStructWithDoc {
/// Another doc comment (ignored)
inner: String,
}
#[test]
fn transparent_struct_with_doc() {
test!(TransparentStructWithDoc)
.assert_snapshot()
.assert_allows_ser_roundtrip_default()
.assert_matches_de_roundtrip(arbitrary_values());
}
#[derive(JsonSchema, Deserialize, Serialize, Default)]
#[serde(transparent)]
pub struct TransparentNewType(String);
#[test]
fn transparent_newtype() {
test!(TransparentNewType)
.assert_identical::<String>()
.assert_allows_ser_roundtrip_default()
.assert_matches_de_roundtrip(arbitrary_values());
}
#[derive(JsonSchema, Deserialize, Serialize)]
#[serde(transparent)]
pub struct TransparentNewTypeWithValidation(#[schemars(length(min = 1))] String);
#[test]
fn transparent_newtype_with_validation() {
test!(TransparentNewTypeWithValidation)
.with_validator(|v| !v.0.is_empty())
.assert_snapshot()
.assert_allows_ser_roundtrip([TransparentNewTypeWithValidation("a@a.com".into())])
.assert_matches_de_roundtrip(arbitrary_values());
}