relay-knowledge 1.1.17

Graph-database-based knowledge graph project.
Documentation
use super::*;

#[test]
fn relationship_row_mapping_preserves_resolution_and_evidence() {
    let connection = Connection::open_in_memory().expect("database should open");

    let relationship = connection
        .query_row(
            "
            SELECT 'relationship', 'repository', 'scope', 'depends_on',
                   'source', 'file', 'target', 'component', 'serde',
                   'declared', 9000, 'extracted', 'Cargo.toml', 3, 4, 11
            ",
            [],
            relationship_from_row,
        )
        .expect("software relationship should decode");

    assert_eq!(relationship.relationship_kind, "depends_on");
    assert_eq!(relationship.target_hint.as_deref(), Some("serde"));
    assert_eq!(
        relationship.evidence_line_range,
        RepositoryCodeRange { start: 3, end: 4 }
    );
    assert_eq!(relationship.created_graph_version, GraphVersion::new(11));
}

#[test]
fn relationship_language_filter_binds_source_and_component_languages() {
    let filters = vec!["rust".to_owned(), "toml".to_owned()];
    let sql = relationship_language_filter_sql(&filters);
    let mut values = Vec::new();

    push_relationship_language_filter_values(&mut values, &filters);

    assert_eq!(sql.matches("files.language_id = ?").count(), 2);
    assert_eq!(sql.matches("components.language_id = ?").count(), 2);
    assert_eq!(
        values,
        vec![
            Value::Text("rust".to_owned()),
            Value::Text("rust".to_owned()),
            Value::Text("toml".to_owned()),
            Value::Text("toml".to_owned()),
        ]
    );
}