Skip to content

Commit

Permalink
Port inline_subschemas tests to new integration test style
Browse files Browse the repository at this point in the history
  • Loading branch information
GREsau committed Sep 11, 2024
1 parent 6014146 commit dbd8a22
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 43 deletions.
43 changes: 0 additions & 43 deletions schemars/tests/inline_subschemas.rs

This file was deleted.

61 changes: 61 additions & 0 deletions schemars/tests/integration/inline_subschemas.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
use crate::prelude::*;
use schemars::generate::SchemaSettings;

#[derive(JsonSchema, Deserialize, Serialize, Default)]
struct MyJob {
spec: MyJobSpec,
}

#[derive(JsonSchema, Deserialize, Serialize, Default)]
struct MyJobSpec {
replicas: u32,
}

#[test]
fn struct_normal() {
let settings = SchemaSettings::default().with(|s| s.inline_subschemas = true);
test!(MyJob, settings)
.assert_snapshot()
.assert_allows_ser_roundtrip_default()
.assert_matches_de_roundtrip(arbitrary_values());
}

#[derive(JsonSchema, Deserialize, Serialize)]
struct RecursiveOuter {
direct: Option<Box<RecursiveOuter>>,
indirect: Option<Box<RecursiveInner>>,
}

#[derive(JsonSchema, Deserialize, Serialize)]
struct RecursiveInner {
recursive: RecursiveOuter,
}

#[test]
fn struct_recursive() {
let settings = SchemaSettings::default().with(|s| s.inline_subschemas = true);
test!(RecursiveOuter, settings)
.assert_snapshot()
.assert_allows_ser_roundtrip([
RecursiveOuter {
direct: None,
indirect: None,
},
RecursiveOuter {
direct: Some(Box::new(RecursiveOuter {
direct: None,
indirect: None,
})),
indirect: Some(Box::new(RecursiveInner {
recursive: RecursiveOuter {
direct: Some(Box::new(RecursiveOuter {
direct: None,
indirect: None,
})),
indirect: None,
},
})),
},
])
.assert_matches_de_roundtrip(arbitrary_values());
}
1 change: 1 addition & 0 deletions schemars/tests/integration/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ mod from_value;
mod garde;
#[cfg(feature = "indexmap2")]
mod indexmap;
mod inline_subschemas;
mod std_types;

mod prelude {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "MyJob",
"type": "object",
"properties": {
"spec": {
"type": "object",
"properties": {
"replicas": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"replicas"
]
}
},
"required": [
"spec"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "RecursiveOuter",
"type": "object",
"properties": {
"direct": {
"anyOf": [
{
"$ref": "#/$defs/RecursiveOuter"
},
{
"type": "null"
}
]
},
"indirect": {
"type": [
"object",
"null"
],
"properties": {
"recursive": {
"$ref": "#/$defs/RecursiveOuter"
}
},
"required": [
"recursive"
]
}
},
"required": [
"direct",
"indirect"
],
"$defs": {
"RecursiveOuter": {
"type": "object",
"properties": {
"direct": {
"anyOf": [
{
"$ref": "#/$defs/RecursiveOuter"
},
{
"type": "null"
}
]
},
"indirect": {
"type": [
"object",
"null"
],
"properties": {
"recursive": {
"$ref": "#/$defs/RecursiveOuter"
}
},
"required": [
"recursive"
]
}
},
"required": [
"direct",
"indirect"
]
}
}
}

0 comments on commit dbd8a22

Please sign in to comment.