relateby-pattern 0.3.0

Core pattern data structures
Documentation
//! Snapshot tests for validation error messages
//!
//! These tests use insta to capture and verify validation error messages
//! remain consistent across changes.

use pattern_core::{Pattern, ValidationRules};

#[test]
fn test_validation_error_max_depth() {
    let pattern = Pattern::pattern("root".to_string(), vec![
        Pattern::pattern("child".to_string(), vec![
            Pattern::point("grandchild".to_string()),
        ]),
    ]);
    
    let rules = ValidationRules {
        max_depth: Some(1),
        ..Default::default()
    };
    
    let result = pattern.validate(&rules);
    assert!(result.is_err());
    
    if let Err(e) = result {
        insta::assert_snapshot!("validation_error_max_depth", e.message);
        insta::assert_snapshot!("validation_error_max_depth_rule", e.rule_violated);
        insta::assert_snapshot!("validation_error_max_depth_location", format!("{:?}", e.location));
    }
}

#[test]
fn test_validation_error_max_elements() {
    let pattern = Pattern::pattern("root".to_string(), vec![
        Pattern::point("child1".to_string()),
        Pattern::point("child2".to_string()),
        Pattern::point("child3".to_string()),
    ]);
    
    let rules = ValidationRules {
        max_elements: Some(2),
        ..Default::default()
    };
    
    let result = pattern.validate(&rules);
    assert!(result.is_err());
    
    if let Err(e) = result {
        insta::assert_snapshot!("validation_error_max_elements", e.message);
        insta::assert_snapshot!("validation_error_max_elements_rule", e.rule_violated);
    }
}