cqrs-es2 0.10.0

A Rust library providing lightweight CQRS and event sourcing framework.
Documentation
use crate::HandlerTester;

use super::{
    aggregate::Customer,
    commands::*,
    events::*,
};

type ThisHandlerTester =
    HandlerTester<CustomerCommand, CustomerEvent, Customer>;

#[test]
fn test_change_name() {
    ThisHandlerTester::default()
        .given_no_previous_events()
        .when(CustomerCommand::AddCustomerName(
            AddCustomerName {
                changed_name: "John Doe".to_string(),
            },
        ))
        .then_expect(vec![CustomerEvent::NameAdded(
            NameAdded {
                changed_name: "John Doe".to_string(),
            },
        )]);
}

#[test]
fn test_change_name_again() {
    ThisHandlerTester::default()
        .given(vec![CustomerEvent::NameAdded(
            NameAdded {
                changed_name: "John Doe".to_string(),
            },
        )])
        .when(CustomerCommand::AddCustomerName(
            AddCustomerName {
                changed_name: "John Doe".to_string(),
            },
        ))
        .then_expect_error(
            "a name has already been added for this customer",
        );
}