public void Should_Append_To_Domain_Event_Store() { IDomainEventStore <TestAggregate, Guid> eventStore = Factory.CreateEventStore <TestAggregate, Guid>(); // Create aggregate. TestAggregate aggregate = new TestAggregate(Guid.NewGuid()); eventStore.Save(aggregate); IDomainEventStream <Guid> stream = eventStore.GetDomainEventStream(aggregate.Id); var fromStream = new TestAggregate(stream); Assert.NotNull(stream); Assert.Equal(aggregate.Id, fromStream.Id); // 1 domain event in total: Created event. Assert.Equal(1, stream.DomainEventCount); }
public void Should_Retrieve_Aggregate_Stream() { IDomainEventStore <TestAggregate, Guid> eventStore = Factory.CreateEventStore <TestAggregate, Guid>(); // Create and modify aggregate. TestAggregate aggregate = new TestAggregate(Guid.NewGuid()); aggregate.ExecuteSomeOperation("I was modified!~"); eventStore.Save(aggregate); IDomainEventStream <Guid> stream = eventStore.GetDomainEventStream(aggregate.Id); Assert.NotNull(stream); Assert.Equal(aggregate.Id, stream.AggregateId); // 2 domain events in total: Created + Modified events. Assert.Equal(2, stream.DomainEventCount); // Stream starts from version 1 to 2. Assert.Equal(1, stream.BeginVersion); Assert.Equal(2, stream.EndVersion); }
/// <summary> /// Get all domain events of aggregate. /// </summary> /// <param name="aggreggateId">ID of the aggregate.</param> /// <returns>All domain events for the aggregate.</returns> public IDomainEventStream <TAggregateId> GetDomainEventStream(TAggregateId aggreggateId) { return(_domainEventStore.GetDomainEventStream(aggreggateId)); }