journey-cli 0.9.11

A CLI-based journal application with automatic timestamping, vault management, and Obsidian integration
Documentation
use journey::config_manager::ConfigManager;
use journey::config::{Config, VaultConfig};
use std::collections::HashMap;
use tempfile::TempDir;
use std::path::PathBuf;

fn create_test_config_manager() -> (ConfigManager, TempDir) {
    let temp_dir = TempDir::new().unwrap();
    let config_path = temp_dir.path().join("journey.yaml");
    let config_manager = ConfigManager { config_path };
    (config_manager, temp_dir)
}

#[test]
fn test_config_manager_creation() {
    let (config_manager, _temp_dir) = create_test_config_manager();
    assert!(!config_manager.config_exists());
}

#[test]
fn test_load_config_nonexistent() {
    let (config_manager, _temp_dir) = create_test_config_manager();
    let config = config_manager.load_config().unwrap();
    assert!(config.vaults.is_empty());
}

#[test]
fn test_save_and_load_config() {
    let (config_manager, _temp_dir) = create_test_config_manager();
    
    let mut config = Config::new();
    let vault = VaultConfig::test_config("test", "/tmp/test");
    config.add_vault(vault);
    
    config_manager.save_config(&config).unwrap();
    assert!(config_manager.config_exists());
    
    let loaded_config = config_manager.load_config().unwrap();
    assert_eq!(loaded_config.vaults.len(), 1);
    assert!(loaded_config.vaults.contains_key("test"));
}

#[test]
fn test_config_exists() {
    let (config_manager, _temp_dir) = create_test_config_manager();
    
    assert!(!config_manager.config_exists());
    
    let config = Config::new();
    config_manager.save_config(&config).unwrap();
    
    assert!(config_manager.config_exists());
}