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::Protobuf,
            content.to_string(),
            Version::parse(version).unwrap(),
        )
    }

    #[test]
    fn test_message_changes() {
        let old_proto = r#"
            message User {
                int32 id = 1;
                string name = 2;
            }
        "#;

        let new_proto = r#"
            message User {
                int32 id = 1;
                string name = 2;
                string email = 3;
            }
        "#;

        let analyzer = ProtobufAnalyzer;
        let result = analyzer.analyze_compatibility(
            &create_schema(old_proto, "1.0.0"),
            &create_schema(new_proto, "1.1.0")
        ).unwrap();

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