use lib_dispatch::{prelude::*, util::tokio_default_runtime};
use std::sync::Arc;

pub async fn hello() -> String {
    "say hello".to_string()
}

#[tokio::test]
async fn test() {
    env_logger::init();

    let event = "1";
    let runtime = tokio_default_runtime().unwrap();
    let dispatch = Arc::new(EventDispatcher::construct(runtime, || {
        vec![Module::new().event(event, hello)]
    }));
    let request = ModuleRequest::new(event);
    let _ = EventDispatcher::async_send_with_callback(dispatch.clone(), request, |resp| {
        Box::pin(async move {
            dbg!(&resp);
        })
    })
    .await;

    std::mem::forget(dispatch);
}