cqrs 0.3.1

An event-sourced command-query system
Documentation
use super::*;
use crate::testing::*;

type TestMemoryEventStore = EventStore<TestAggregate, TestEvent, TestMetadata>;

#[test]
fn can_get_an_event_stream_with_expected_count_of_events() {
    let es = TestMemoryEventStore::default();
    let id = TestId("");
    es.append_events(&id, &vec![TestEvent], None, TestMetadata)
        .unwrap();
    let events = es
        .read_events(&id, Since::BeginningOfStream, None)
        .unwrap()
        .unwrap();
    assert_eq!(events.len(), 1);
}

#[test]
fn can_get_an_event_stream_with_expected_count_of_events_when_not_starting_from_beginning_of_stream(
) {
    let es = TestMemoryEventStore::default();
    let id = TestId("");
    es.append_events(&id, &vec![TestEvent], None, TestMetadata)
        .unwrap();
    let events = es
        .read_events(&id, Since::Event(EventNumber::MIN_VALUE), None)
        .unwrap()
        .unwrap();
    assert_eq!(events.len(), 0);
}

#[test]
fn can_get_an_event_stream_with_expected_count_of_events_when_asking_past_end_of_stream() {
    let es = TestMemoryEventStore::default();
    let id = TestId("");
    es.append_events(&id, &vec![TestEvent], None, TestMetadata)
        .unwrap();
    let events = es
        .read_events(&id, Since::Event(EventNumber::MIN_VALUE.next()), None)
        .unwrap()
        .unwrap();
    assert_eq!(events.len(), 0);
}

#[test]
fn can_get_an_event_stream_multiple_times_are_equal() {
    let es = TestMemoryEventStore::default();
    let id = TestId("");
    es.append_events(&id, &vec![TestEvent], None, TestMetadata)
        .unwrap();
    let events1 = es.read_events(&id, Since::BeginningOfStream, None);
    let events2 = es.read_events(&id, Since::BeginningOfStream, None);
    assert_eq!(events1, events2);
}

#[test]
fn can_get_different_event_streams() {
    let es = TestMemoryEventStore::default();

    es.append_events(&TestId(""), &vec![TestEvent], None, TestMetadata)
        .unwrap();
    let events1 = es.read_events(&TestId(""), Since::BeginningOfStream, None);
    let events2 = es.read_events(&TestId("other"), Since::BeginningOfStream, None);
    assert_ne!(events1, events2);
}