use super::support::{schema, scratch};
use crate::generators::rust::write_api;
#[test]
fn canonical_api_models_derive_openapi_schemas() {
let out = scratch("canonical-api-schema");
write_api(&out, &schema(), false).expect("write should succeed");
let models = std::fs::read_to_string(out.join("models.rs")).unwrap();
for name in ["Products", "NewProducts", "PatchProducts"] {
let declared = format!("pub struct {name} {{");
let at = models.find(&declared).expect("struct should be declared");
let derive = models[..at].rfind("#[derive(").unwrap();
assert!(
models[derive..at].contains("utoipa::ToSchema"),
"{name} does not derive ToSchema"
);
}
assert!(models.contains("impl utoipa::ToSchema for Interval {}"));
let _ = std::fs::remove_dir_all(&out);
}