[−][src]Struct cqrs_proptest::AggregateFromEventSequence
A wrapper for an aggregate that was generated from an arbitrary sequence of events.
Examples
use cqrs_core::{Aggregate, AggregateEvent, Event}; use cqrs_proptest::AggregateFromEventSequence; use proptest::{prelude::*, strategy::{LazyTupleUnion, ValueTree, WA}, test_runner::TestRunner, prop_oneof}; #[derive(Debug, Default)] struct MyAggregate { active: bool } impl Aggregate for MyAggregate { fn aggregate_type() -> &'static str { "my_aggregate" } } #[derive(Clone, Copy, Debug)] struct CreatedEvent{}; impl Event for CreatedEvent { fn event_type(&self) -> &'static str { "created" } } impl AggregateEvent<MyAggregate> for CreatedEvent { fn apply_to(self, aggregate: &mut MyAggregate) { aggregate.active = true; } } #[derive(Clone, Copy, Debug)] struct DeletedEvent{}; impl Event for DeletedEvent { fn event_type(&self) -> &'static str { "deleted" } } impl AggregateEvent<MyAggregate> for DeletedEvent { fn apply_to(self, aggregate: &mut MyAggregate) { aggregate.active = false; } } #[derive(Clone, Copy, Debug)] enum MyEvents { Created(CreatedEvent), Deleted(DeletedEvent), } impl Event for MyEvents { fn event_type(&self) -> &'static str { match *self { MyEvents::Created(ref e) => e.event_type(), MyEvents::Deleted(ref e) => e.event_type(), } } } impl AggregateEvent<MyAggregate> for MyEvents { fn apply_to(self, aggregate: &mut MyAggregate) { match self { MyEvents::Created(e) => e.apply_to(aggregate), MyEvents::Deleted(e) => e.apply_to(aggregate), } } } impl Arbitrary for MyEvents { type Parameters = (); fn arbitrary_with(_: Self::Parameters) -> Self::Strategy { prop_oneof![ Just(MyEvents::Created(CreatedEvent{})), Just(MyEvents::Deleted(DeletedEvent{})), ] } type Strategy = LazyTupleUnion<(WA<Just<Self>>, WA<Just<Self>>)>; } any::<AggregateFromEventSequence<MyAggregate, MyEvents>>() .new_tree(&mut TestRunner::default()) .unwrap() .current() .into_aggregate(); let parameters = (prop::collection::SizeRange::from(1..10), ()); any_with::<AggregateFromEventSequence<MyAggregate, MyEvents>>(parameters) .new_tree(&mut TestRunner::default()) .unwrap() .current();
Methods
impl<A, E> AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
pub fn into_aggregate(self) -> A
[src]
Unwraps the generated aggregate.
Trait Implementations
impl<A: Clone, E: Clone> Clone for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
fn clone(&self) -> AggregateFromEventSequence<A, E>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<A: Default, E: Default> Default for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
fn default() -> AggregateFromEventSequence<A, E>
[src]
impl<A, E> From<A> for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
impl<A: PartialEq, E: PartialEq> PartialEq<AggregateFromEventSequence<A, E>> for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
fn eq(&self, other: &AggregateFromEventSequence<A, E>) -> bool
[src]
fn ne(&self, other: &AggregateFromEventSequence<A, E>) -> bool
[src]
impl<A: Copy, E: Copy> Copy for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
impl<A: Eq, E: Eq> Eq for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
impl<A, E> Debug for AggregateFromEventSequence<A, E> where
A: Aggregate + Debug,
E: AggregateEvent<A>,
[src]
A: Aggregate + Debug,
E: AggregateEvent<A>,
impl<A: Hash, E: Hash> Hash for AggregateFromEventSequence<A, E> where
A: Aggregate,
E: AggregateEvent<A>,
[src]
A: Aggregate,
E: AggregateEvent<A>,
fn hash<__HAE: Hasher>(&self, state: &mut __HAE)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl<A, E> Arbitrary for AggregateFromEventSequence<A, E> where
A: Aggregate + Debug,
E: AggregateEvent<A> + Arbitrary + 'static,
[src]
A: Aggregate + Debug,
E: AggregateEvent<A> + Arbitrary + 'static,
type Parameters = (SizeRange, <E as Arbitrary>::Parameters)
The type of parameters that [arbitrary_with
] accepts for configuration of the generated [Strategy
]. Parameters must implement [Default
]. Read more
type Strategy = BoxedStrategy<Self>
The type of [Strategy
] used to generate values of type Self
. Read more
fn arbitrary_with(args: Self::Parameters) -> Self::Strategy
[src]
fn arbitrary() -> Self::Strategy
[src]
Generates a [Strategy
] for producing arbitrary values of type the implementing type (Self
). Read more
Auto Trait Implementations
impl<A, E> !Sync for AggregateFromEventSequence<A, E>
impl<A, E> !Send for AggregateFromEventSequence<A, E>
impl<A, E> Unpin for AggregateFromEventSequence<A, E> where
A: Unpin,
E: Unpin,
A: Unpin,
E: Unpin,
impl<A, E> RefUnwindSafe for AggregateFromEventSequence<A, E> where
A: RefUnwindSafe,
E: RefUnwindSafe,
A: RefUnwindSafe,
E: RefUnwindSafe,
impl<A, E> UnwindSafe for AggregateFromEventSequence<A, E> where
A: UnwindSafe,
E: RefUnwindSafe,
A: UnwindSafe,
E: RefUnwindSafe,
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,