use std::sync::{Arc, Mutex}; use megane::{ client::LogClient, event::LogGroupEvent, handler::{loggroup_event_handler::LogGroupEventHandler, EventHandler}, state::loggroups_state::LogGroupsState, }; mod common; #[tokio::test] async fn test_run() { let state = Arc::new(Mutex::new(LogGroupsState::new())); let (mut inst_tx, inst_rx) = tokio::sync::mpsc::channel::(1); let mock_client = common::get_mock_client("loggroups_01.json"); let mut handler = LogGroupEventHandler::new(LogClient::new(mock_client), Arc::clone(&state), inst_rx); let handle = tokio::spawn(async move { handler.run().await.unwrap(); }); assert!(inst_tx.send(LogGroupEvent::FetchLogGroups).await.is_ok()); assert!(inst_tx.send(LogGroupEvent::Abort).await.is_ok()); let _ = handle.await.unwrap(); for i in 0..=2 { assert_eq!( Some(format!("log_group_{}", (i + 1).to_string())), state .lock() .unwrap() .log_groups .get_item(i) .unwrap() .log_group_name ); assert_eq!( Some((i + 1).to_string()), state.lock().unwrap().log_groups.get_item(i).unwrap().arn, ); } }