#![cfg(test)]
use std::sync::Arc;
use kimun_core::{NoteVault, SystemPath, VaultConfig};
use ratatui::crossterm::event::{
KeyCode, KeyEvent, KeyEventKind, KeyEventState, KeyModifiers, MouseButton, MouseEvent,
MouseEventKind,
};
use crate::components::events::InputEvent;
pub fn sys<P: AsRef<std::path::Path>>(path: P) -> SystemPath {
SystemPath::try_absolute(&path).unwrap_or_else(|e| panic!("test path must be absolute: {e}"))
}
pub async fn temp_vault(prefix: &str) -> Arc<NoteVault> {
let dir = tempfile::Builder::new()
.prefix(&format!("kimun_{prefix}_test_"))
.tempdir()
.unwrap()
.keep();
Arc::new(NoteVault::new(VaultConfig::new(sys(&dir))).await.unwrap())
}
#[allow(dead_code)]
pub fn key_event(code: KeyCode) -> InputEvent {
InputEvent::Key(KeyEvent {
code,
modifiers: KeyModifiers::NONE,
kind: KeyEventKind::Press,
state: KeyEventState::NONE,
})
}
pub fn mouse_down_at(col: u16, row: u16) -> InputEvent {
InputEvent::Mouse(MouseEvent {
kind: MouseEventKind::Down(MouseButton::Left),
column: col,
row,
modifiers: KeyModifiers::NONE,
})
}