rusty-schema-diff 0.1.1

A powerful schema evolution analyzer supporting JSON Schema, OpenAPI, Protobuf, and SQL DDL
Documentation
#[cfg(test)]
mod tests {
    use super::*;
    use crate::Schema;
    use semver::Version;

    fn create_schema(content: &str, version: &str) -> Schema {
        Schema::new(
            crate::SchemaFormat::JsonSchema,
            content.to_string(),
            Version::parse(version).unwrap(),
        )
    }

    #[test]
    fn test_property_changes() {
        let old_schema = r#"{
            "type": "object",
            "properties": {
                "name": { "type": "string" }
            }
        }"#;

        let new_schema = r#"{
            "type": "object",
            "properties": {
                "name": { "type": "string" },
                "age": { "type": "integer" }
            }
        }"#;

        let analyzer = JsonSchemaAnalyzer;
        let result = analyzer.analyze_compatibility(
            &create_schema(old_schema, "1.0.0"),
            &create_schema(new_schema, "1.1.0")
        ).unwrap();

        assert!(result.is_compatible);
        assert!(result.changes.iter().any(|c| matches!(c.change_type, ChangeType::Addition)));
    }
}