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

    #[test]
    fn test_table_changes() {
        let old_sql = r#"
            CREATE TABLE users (
                id INTEGER PRIMARY KEY,
                name TEXT NOT NULL
            );
        "#;

        let new_sql = r#"
            CREATE TABLE users (
                id INTEGER PRIMARY KEY,
                name TEXT NOT NULL,
                email TEXT
            );
        "#;

        let analyzer = SqlAnalyzer;
        let result = analyzer.analyze_compatibility(
            &create_schema(old_sql, "1.0.0"),
            &create_schema(new_sql, "1.1.0")
        ).unwrap();

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