56 lines
1.6 KiB
Rust
56 lines
1.6 KiB
Rust
#[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");
|
|
}
|
|
}
|