#[cfg(feature = "websocket")]
mod websocket_integration_tests {
use sdforge::websocket::{AppState, ConnectionManager, WebSocketConfig};
use std::sync::Arc;
#[test]
fn test_websocket_config_default() {
let config = WebSocketConfig::default();
let _cloned = config.clone();
assert_eq!(config.max_message_size, 1_048_576);
}
#[test]
fn test_connection_manager_new() {
let manager = ConnectionManager::new();
let _ = manager;
}
#[test]
fn test_app_state_with_manager() {
let manager = Arc::new(ConnectionManager::new());
let state = AppState::new(manager);
let _state_clone = state.clone();
assert_eq!(state.config.max_message_size, 1_048_576);
}
#[test]
fn test_websocket_integration_basic() {
let _config = WebSocketConfig::default();
let manager = Arc::new(ConnectionManager::new());
let state = AppState::new(manager);
assert_eq!(state.config.max_message_size, 1_048_576);
}
}
#[cfg(feature = "websocket")]
mod websocket_enhanced_integration_tests {
use sdforge::websocket::{ConnectionManager, WebSocketConnection};
use std::sync::Arc;
#[tokio::test]
async fn test_websocket_connection_creation() {
let (conn, _rx) = WebSocketConnection::new("test-conn-1".to_string());
assert_eq!(conn.id(), "test-conn-1");
}
#[tokio::test]
async fn test_connection_manager_multiple_connections() {
let manager = Arc::new(ConnectionManager::new());
for i in 0..3 {
let conn_id = format!("integration-conn-{}", i);
let (conn, _rx) = WebSocketConnection::new(conn_id.clone());
manager.add_connection(conn_id, conn).await;
}
assert_eq!(manager.connection_count().await, 3);
let conn = manager.get_connection("integration-conn-1").await;
assert!(conn.is_some());
assert_eq!(conn.unwrap().id(), "integration-conn-1");
}
#[tokio::test]
async fn test_connection_removal() {
let manager = Arc::new(ConnectionManager::new());
let (conn, _rx) = WebSocketConnection::new("remove-test".to_string());
manager
.add_connection("remove-test".to_string(), conn)
.await;
assert_eq!(manager.connection_count().await, 1);
manager.remove_connection("remove-test").await;
assert_eq!(manager.connection_count().await, 0);
let conn = manager.get_connection("remove-test").await;
assert!(conn.is_none());
}
}