#[cfg(test)] mod tests { use super::*; use tempfile::TempDir; #[tokio::test] async fn test_storage_operations() { let db = FutrumDB::new("test.config").unwrap(); // Test CRUD operations let value = serde_json::json!({"test": "value"}); // Create assert!(db.create_document("test", "key1", value.clone()).await.is_ok()); // Read let result = db.read_document("test", "key1").await.unwrap(); assert!(result.is_some()); assert_eq!(result.unwrap(), value); // Update let new_value = serde_json::json!({"test": "updated"}); assert!(db.update_document("test", "key1", new_value.clone()).await.is_ok()); // Delete assert!(db.delete_document("test", "key1").await.is_ok()); assert!(db.read_document("test", "key1").await.unwrap().is_none()); } #[tokio::test] async fn test_transactions() { let db = FutrumDB::new("test.config").unwrap(); // This would test transaction functionality // Implementation depends on TransactionManager integration } #[test] fn test_command_history() { let mut history = CommandHistory::new(); history.add_entry( "CREATE".to_string(), serde_json::json!({"key": "test"}), true ); assert_eq!(history.len(), 1); assert!(!history.is_empty()); let recent = history.get_recent(5); assert_eq!(recent.len(), 1); assert_eq!(recent[0].command, "CREATE"); } }