yao 0.1.4

a fast, tiny, extensiable workflow engine
Documentation
use crate::{
    sch::{event::EventHub, Event},
    Message, Workflow,
};
use std::sync::Arc;

#[tokio::test]
async fn event_start() {
    let text = include_str!("./simple.yml");
    let workflow = Workflow::from_str(text).unwrap();

    let evt = EventHub::new();
    let workflow2 = workflow.clone();
    evt.add_event(&Event::OnStart(Arc::new(move |w: &Workflow| {
        assert!(w.id == workflow2.id);
    })));

    evt.disp_start(&workflow);
}

#[tokio::test]
async fn event_finished() {
    let text = include_str!("./simple.yml");
    let workflow = Workflow::from_str(text).unwrap();

    let evt = EventHub::new();
    let workflow2 = workflow.clone();
    evt.add_event(&Event::OnComplete(Arc::new(move |w: &Workflow| {
        assert!(w.id == workflow2.id);
    })));

    evt.disp_complete(&workflow);
}

#[tokio::test]
async fn event_error() {
    let text = include_str!("./simple.yml");
    let workflow = Workflow::from_str(text).unwrap();
    let workflow_id = workflow.id.clone();

    let evt = EventHub::new();
    evt.add_event(&Event::OnError(Arc::new(move |w: &Workflow| {
        assert!(w.id == workflow_id);
    })));

    evt.disp_error(&workflow);
}

#[tokio::test]
async fn event_message() {
    let evt = EventHub::new();
    evt.add_event(&Event::OnMessage(Arc::new(move |message: &Message| {
        assert!(message.id == "m1");
    })));
    let m = Message::new("w1", "1", "u1", None);
    evt.disp_message(&m);
}