futrum/tests/integration_test.rs

56 lines
1.6 KiB
Rust
Raw Permalink Normal View History

2025-10-01 23:13:46 +03:00
#[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");
}
}