public void PartitionKey_returns_SourceId_as_string()
        {
            FakeDomainEvent sut    = _fixture.Create <FakeDomainEvent>();
            string          actual = sut.PartitionKey;

            actual.Should().Be(sut.SourceId.ToString());
        }
        public void Dispatch_EventHandler1ThrowsException_ExecutionStopsAndRethrow(
            [Frozen] Mock<IContainer> container,
            Mock<IDomainEventHandler<FakeDomainEvent>> eventHandler1,
            Mock<IDomainEventHandler<FakeDomainEvent>> eventHandler2,
            FakeDomainEvent domainEvent,
            DomainEventDispatcher dispatcher)
        {
            // Arrange

            var genericTypeName = typeof (IDomainEventHandler<FakeDomainEvent>).FullName;

            var eventHandlers = new List<IDomainEventHandler<FakeDomainEvent>>
            {
                eventHandler1.Object,
                eventHandler2.Object
            };

            container.Setup(c => c.GetAllInstances(It.Is<Type>(t => t.FullName == genericTypeName)))
                     .Returns(eventHandlers);

            eventHandler1.Setup(h => h.Handle(It.IsAny<FakeDomainEvent>())).Throws<Exception>();

            // Act

            Assert.Throws<Exception>(() => dispatcher.Dispatch(domainEvent));

            // Assert

            eventHandler1.Verify(t => t.Handle(domainEvent), Times.Once);

            eventHandler2.Verify(t => t.Handle(domainEvent), Times.Never);
        }
        public void Dispatch_BuildGenericType_ExecutesAllHandlersPassingTheEvent(
            [Frozen] Mock<IContainer> container,
            Mock<IDomainEventHandler<FakeDomainEvent>> eventHandler1,
            Mock<IDomainEventHandler<FakeDomainEvent>> eventHandler2,
            FakeDomainEvent domainEvent,
            DomainEventDispatcher dispatcher)
        {
            // Arrange

            var genericTypeName = typeof (IDomainEventHandler<FakeDomainEvent>).FullName;

            var eventHandlers = new List<IDomainEventHandler<FakeDomainEvent>>
            {
                eventHandler1.Object,
                eventHandler2.Object
            };

            container.Setup(c => c.GetAllInstances(It.Is<Type>(t => t.FullName == genericTypeName)))
                     .Returns(eventHandlers);

            // Act

            dispatcher.Dispatch(domainEvent);

            // Assert

            eventHandler1.Verify(t => t.Handle(domainEvent), Times.Once);

            eventHandler2.Verify(t => t.Handle(domainEvent), Times.Once);
        }
Exemple #4
0
        public void Raise_sets_RaisedAt_correctly()
        {
            var versionedEntity = Mock.Of <IVersionedEntity>();
            var sut             = new FakeDomainEvent();

            sut.Raise(versionedEntity);

            sut.RaisedAt.Should().BeCloseTo(DateTimeOffset.Now);
        }
        public void FromEnvelope_sets_MessageId_correctly()
        {
            FakeDomainEvent domainEvent = _fixture.Create <FakeDomainEvent>();
            var             envelope    = new Envelope(domainEvent);
            var             actual      = PersistentEvent.FromEnvelope(
                envelope, new JsonMessageSerializer());

            actual.MessageId.Should().Be(envelope.MessageId);
        }
        public void FromEnvelope_sets_EventType_correctly()
        {
            FakeDomainEvent domainEvent = _fixture.Create <FakeDomainEvent>();
            var             envelope    = new Envelope(domainEvent);
            var             actual      = PersistentEvent.FromEnvelope(
                envelope, new JsonMessageSerializer());

            actual.EventType.Should().Be(typeof(FakeDomainEvent).FullName);
        }
        public void FromEnvelope_sets_CorrelationId_correctly()
        {
            FakeDomainEvent domainEvent   = _fixture.Create <FakeDomainEvent>();
            var             correlationId = Guid.NewGuid();
            var             envelope      = new Envelope(Guid.NewGuid(), domainEvent, correlationId: correlationId);
            var             actual        = PersistentEvent.FromEnvelope(
                envelope, new JsonMessageSerializer());

            actual.CorrelationId.Should().Be(correlationId);
        }
Exemple #8
0
        public void DomainEvent_by_default_should_generate_its_own_metadata()
        {
            //arrange
            var @event = new FakeDomainEvent();

            //act && assert
            @event.Metadata.Should().NotBeNull();
            @event.Id.Should().NotBeEmpty();
            @event.OccurredOn.Should().BeSameDateAs(DateTime.UtcNow.Date);
        }
        public void FromEnvelope_sets_Contributor_correctly()
        {
            FakeDomainEvent domainEvent = _fixture.Create <FakeDomainEvent>();
            string          contributor = _fixture.Create <string>();
            var             envelope    = new Envelope(Guid.NewGuid(), domainEvent, contributor: contributor);
            var             actual      = PersistentEvent.FromEnvelope(
                envelope, new JsonMessageSerializer());

            actual.Contributor.Should().Be(contributor);
        }
        public void Raise_sets_RaisedAt_correctly()
        {
            IVersionedEntity versionedEntity = Mock.Of <IVersionedEntity>();
            var sut = new FakeDomainEvent();

            sut.Raise(versionedEntity);

            sut.RaisedAt.Kind.Should().Be(DateTimeKind.Utc);
            sut.RaisedAt.Should().BeCloseTo(DateTime.UtcNow);
        }
        private static UntypedEventEnvelope CreateUntypedEventEnvelope()
        {
            var domainEvent    = new FakeDomainEvent();
            var correlationId  = Guid.NewGuid().ToString();
            var causationId    = Guid.NewGuid().ToString();
            var eventMetadata  = new UntypedEventEnvelope.EventMetadata(correlationId, causationId);
            var envelopedEvent = new UntypedEventEnvelope(domainEvent.EventId, eventMetadata, domainEvent);

            return(envelopedEvent);
        }
        public void Raise_sets_version_correctly()
        {
            int version = _fixture.Create <int>();
            IVersionedEntity versionedEntity =
                Mock.Of <IVersionedEntity>(x => x.Version == version);
            var sut = new FakeDomainEvent();

            sut.Raise(versionedEntity);

            sut.Version.Should().Be(version + 1);
        }
        public void Raise_sets_SourceId_correctly()
        {
            var sourceId = Guid.NewGuid();
            IVersionedEntity versionedEntity =
                Mock.Of <IVersionedEntity>(x => x.Id == sourceId);
            var sut = new FakeDomainEvent();

            sut.Raise(versionedEntity);

            sut.SourceId.Should().Be(sourceId);
        }
Exemple #14
0
        public void DomainEvent_should_be_able_to_adapt_provided_arguments_as_metadata()
        {
            //arrange
            var id   = Guid.NewGuid();
            var date = DateTime.UtcNow;

            var @event = new FakeDomainEvent(DomainEventMetadata.For(id, date));

            //act && assert
            @event.Metadata.Should().NotBeNull();
            @event.Id.Should().Be(id);
            @event.OccurredOn.Should().Be(date);
        }
        public void FromEnvelope_sets_EventJson_correctly()
        {
            var             serializer  = new JsonMessageSerializer();
            FakeDomainEvent domainEvent = _fixture.Create <FakeDomainEvent>();
            var             envelope    = new Envelope(domainEvent);

            var actual = PersistentEvent.FromEnvelope(envelope, serializer);

            object deserialized = serializer.Deserialize(actual.EventJson);

            deserialized.Should().BeOfType <FakeDomainEvent>();
            deserialized.ShouldBeEquivalentTo(domainEvent);
        }
        public void DomainEvent_implements_IPartitioned()
        {
            var sut = new FakeDomainEvent();

            sut.Should().BeAssignableTo <IPartitioned>();
        }
        public void Dispatch_NoHandlersRegistered_DoNothing(
            [Frozen] Mock<IContainer> container,
            FakeDomainEvent domainEvent,
            DomainEventDispatcher dispatcher)
        {
            // Arrange

            var genericTypeName = typeof (IDomainEventHandler<FakeDomainEvent>).FullName;

            container.Setup(c => c.GetAllInstances(It.Is<Type>(t => t.FullName == genericTypeName)))
                     .Returns(new List<IDomainEventHandler<FakeDomainEvent>>());

            // Act

            dispatcher.Dispatch(domainEvent);
        }
 public void SetUp()
 {
     _wasHandled = false;
     _event      = new FakeDomainEvent();
 }