domain_patterns 0.2.141

Domain patterns holds patterns from the world of Domain Driven Design.
Documentation
#[macro_use]
extern crate domain_derive;

#[macro_use]
extern crate snafu;

use domain_patterns::collections::*;
pub mod common;
use common::*;
use uuid::Uuid;
use crate::common::UserEvents::UserCreated;
use domain_patterns::event::DomainEvent;

#[test]
#[allow(unused)]
fn test_store_event() {
    let user_id = Uuid::new_v4();
    let test_user = common::create_test_user(&user_id);
    let user_created_event = UserCreatedEvent::new(&test_user);
    let mut user_event_repo = UserEventRepository::new();

    user_event_repo.insert(&UserCreated(user_created_event.clone()));
    assert!(user_event_repo.contains_aggregate(&user_created_event.aggregate_id()));
    assert!(user_event_repo.contains_event(&user_created_event.id()));
}

#[test]
#[allow(unused)]
fn test_retrieve_event() {
    let user_id = Uuid::new_v4();
    let test_user = common::create_test_user(&user_id);
    let user_created_event = UserCreatedEvent::new(&test_user);
    let mut user_event_repo = UserEventRepository::new();

    user_event_repo.insert(&UserCreated(user_created_event.clone()));
    let event = user_event_repo.get(&user_created_event.id()).unwrap();

    let mut mutated_for_failure = user_created_event.clone();
    mutated_for_failure.id = Uuid::new_v4();

    let unpacked_event = match event {
        UserCreated(e) => e,
        _ => mutated_for_failure,
    };

    assert_eq!(unpacked_event.id, user_created_event.id);
}