public void ShouldAppendDomainEventToEndOfStream() { TestAggregateRoot aggregateRoot = new TestAggregateRoot(Guid.NewGuid()); var stream = new DomainEventStream(aggregateRoot.Id); stream.Should().HaveCount(0); var aggregateRootDomainEvent = new AggregateRootChangedDomainEvent(aggregateRoot.Id, Guid.NewGuid()); IDomainEventStream result = stream.AppendDomainEvent(aggregateRootDomainEvent); result.Should().HaveCount(1); }
public void ShouldThrowIfAggregateRootIdDoesNotMatch() { TestAggregateRoot aggregateRoot1 = new TestAggregateRoot(Guid.NewGuid()); TestAggregateRoot aggregateRoot2 = new TestAggregateRoot(Guid.NewGuid()); var aggregateRoot1Stream = new DomainEventStream(aggregateRoot1.Id); aggregateRoot1Stream.Should().HaveCount(0); var aggregateRoot2DomainEvent = new AggregateRootChangedDomainEvent(aggregateRoot2.Id, Guid.NewGuid()); // Append domain event of aggregate 2 to stream of aggregate 1. aggregateRoot1Stream.Invoking(s => s.AppendDomainEvent(aggregateRoot2DomainEvent)).Should().Throw <InvalidOperationException>(); }
public void ShouldBeEqualToNumberOfDomainEvents() { TestAggregateRoot aggregateRoot = new TestAggregateRoot(Guid.NewGuid()); // 3 domain events. var domainEvent1 = new AggregateRootChangedDomainEvent(aggregateRoot.Id, Guid.NewGuid()); var domainEvent2 = new AggregateRootChangedDomainEvent(aggregateRoot.Id, Guid.NewGuid()); var domainEvent3 = new AggregateRootChangedDomainEvent(aggregateRoot.Id, Guid.NewGuid()); DomainEventStream stream = new DomainEventStream(aggregateRoot.Id, new[] { domainEvent1, domainEvent2, domainEvent3 }); stream.DomainEventCount.Should().Be(3); }