83 lines
2.6 KiB
Rust
83 lines
2.6 KiB
Rust
use crate::basic::keywords::orchestration::*;
|
|
use crate::basic::keywords::events::*;
|
|
use crate::basic::keywords::enhanced_memory::*;
|
|
use crate::core::shared::state::AppState;
|
|
use crate::basic::UserSession;
|
|
use std::sync::Arc;
|
|
use uuid::Uuid;
|
|
|
|
#[tokio::test]
|
|
async fn test_orchestrate_workflow_keyword() {
|
|
let mut engine = rhai::Engine::new();
|
|
|
|
let mock_state = create_mock_app_state().await;
|
|
let mock_user = create_mock_user_session();
|
|
|
|
register_orchestrate_workflow(mock_state.clone(), mock_user.clone(), &mut engine);
|
|
register_step_keyword(mock_state.clone(), mock_user.clone(), &mut engine);
|
|
|
|
let script = r#"
|
|
ORCHESTRATE WORKFLOW "test-workflow"
|
|
STEP 1: BOT "test-bot" "analyze"
|
|
"#;
|
|
|
|
let result = engine.eval::<()>(script);
|
|
assert!(result.is_ok(), "Workflow orchestration should execute without errors");
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_event_system() {
|
|
let mut engine = rhai::Engine::new();
|
|
|
|
let mock_state = create_mock_app_state().await;
|
|
let mock_user = create_mock_user_session();
|
|
|
|
register_on_event(mock_state.clone(), mock_user.clone(), &mut engine);
|
|
register_publish_event(mock_state.clone(), mock_user.clone(), &mut engine);
|
|
|
|
let script = r#"
|
|
ON EVENT "test_event" DO
|
|
PUBLISH EVENT "test_event"
|
|
"#;
|
|
|
|
let result = engine.eval::<()>(script);
|
|
assert!(result.is_ok(), "Event system should execute without errors");
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_bot_memory_sharing() {
|
|
let mut engine = rhai::Engine::new();
|
|
|
|
let mock_state = create_mock_app_state().await;
|
|
let mock_user = create_mock_user_session();
|
|
|
|
register_bot_share_memory(mock_state.clone(), mock_user.clone(), &mut engine);
|
|
register_bot_sync_memory(mock_state.clone(), mock_user.clone(), &mut engine);
|
|
|
|
let script = r#"
|
|
BOT SHARE MEMORY "test_key" WITH "target-bot"
|
|
BOT SYNC MEMORY FROM "source-bot"
|
|
"#;
|
|
|
|
let result = engine.eval::<()>(script);
|
|
assert!(result.is_ok(), "Bot memory sharing should execute without errors");
|
|
}
|
|
|
|
async fn create_mock_app_state() -> Arc<AppState> {
|
|
// This would need to be implemented with proper mock setup
|
|
// For now, this is a placeholder
|
|
todo!("Implement mock AppState for testing")
|
|
}
|
|
|
|
fn create_mock_user_session() -> UserSession {
|
|
UserSession {
|
|
id: Uuid::new_v4(),
|
|
user_id: Uuid::new_v4(),
|
|
bot_id: Uuid::new_v4(),
|
|
title: "Test Session".to_string(),
|
|
context_data: serde_json::Value::Null,
|
|
current_tool: None,
|
|
created_at: chrono::Utc::now(),
|
|
updated_at: chrono::Utc::now(),
|
|
}
|
|
}
|