42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use crate::prelude::*;
|
|
|
|
#[derive(JsonSchema, Deserialize, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
struct Struct {
|
|
#[serde(skip)]
|
|
_skipped: bool,
|
|
included: bool,
|
|
}
|
|
|
|
#[test]
|
|
fn skip_struct_field() {
|
|
test!(Struct)
|
|
.assert_snapshot()
|
|
.assert_allows_de_roundtrip([json!({ "included": true })])
|
|
.assert_rejects_de([json!({
|
|
"_skipped": true,
|
|
"included": true
|
|
})])
|
|
.assert_matches_de_roundtrip(arbitrary_values_except(
|
|
Value::is_array,
|
|
"structs with `#derive(Deserialize)` can technically be deserialized from sequences, but that's not intended to be used via JSON, so schemars ignores it",
|
|
));
|
|
}
|
|
|
|
#[derive(JsonSchema, Deserialize, Serialize)]
|
|
pub enum Enum {
|
|
Included1,
|
|
#[serde(skip)]
|
|
_Skipped,
|
|
Included2,
|
|
}
|
|
|
|
#[test]
|
|
fn skip_enum_variants() {
|
|
test!(Enum)
|
|
.assert_snapshot()
|
|
.assert_allows_de_roundtrip([json!("Included1"), json!("Included2")])
|
|
.assert_rejects_de([json!("_Skipped")])
|
|
.assert_matches_de_roundtrip(arbitrary_values());
|
|
}
|