modelvault-core 0.16.0

Core engine for ModelVault — application-focused embedded storage with model schemas, validation, and migrations.
Documentation
use std::fs;

use modelvault_core::Database;
use modelvault_core::DbError;

#[test]
fn open_nested_file_under_tempdir() {
    let root = tempfile::tempdir().expect("tempdir");
    let path = root.path().join("nested").join("db.modelvault");
    fs::create_dir_all(path.parent().unwrap()).expect("mkdir");
    let db = Database::open(&path).expect("open");
    assert_eq!(db.path(), path.as_path());
    assert!(path.exists());
}

#[test]
fn open_existing_file_roundtrip() {
    let dir = tempfile::tempdir().expect("tempdir");
    let path = dir.path().join("round.modelvault");
    {
        let _a = Database::open(&path).expect("first open");
    }
    let _b = Database::open(&path).expect("second open");
    assert!(path.exists());
}

#[test]
fn open_directory_returns_io_error() {
    let dir = tempfile::tempdir().expect("tempdir");
    let res = Database::open(dir.path());
    assert!(matches!(res, Err(DbError::Io(_))));
}

#[test]
fn open_without_parent_fails() {
    let dir = tempfile::tempdir().expect("tempdir");
    let path = dir
        .path()
        .join("nope")
        .join("missing")
        .join("db.modelvault");
    let res = Database::open(&path);
    assert!(matches!(res, Err(DbError::Io(_))));
}