コード例 #1
0
        public void Register_WithUnresolvedTopicHandler_WithUnserializableTopic_ThrowsUnserializableTypeException()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            // Act
            TestDelegate register = () => dispatcher.Register <UnserializableTopic, ITopicHandler <UnserializableTopic> >();

            // Assert
            Assert.That(register, Throws.TypeOf <UnserializableTypeException>());
        }
コード例 #2
0
        public void Handle_WithNoHandlerRegistered_DoesNothing()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            // Act
            TestDelegate handle = () => dispatcher.Handle(subscriber, topic);

            // Assert
            Assert.That(handle, Throws.Nothing);
        }
コード例 #3
0
        public void RegisterAsync_WithUnserializableTopic_ThrowsUnserializableTypeException()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);
            AsyncTopicHandlerDelegate <UnserializableTopic> handler = _ => Task.CompletedTask;

            // Act
            TestDelegate register = () => dispatcher.Register(handler);

            // Assert
            Assert.That(register, Throws.TypeOf <UnserializableTypeException>());
        }
コード例 #4
0
        public void Register_WithAsyncTopicHandlerInstance_WithUnserializableTopic_ThrowsUnserializableTypeException()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);
            var handler    = new Mock <IAsyncTopicHandler <UnserializableTopic> >().Object;

            // Act
            TestDelegate register = () => dispatcher.Register(handler);

            // Assert
            Assert.That(register, Throws.TypeOf <UnserializableTypeException>());
        }
コード例 #5
0
        public void Handle_WithAsyncHandlerRegistered_CallsHandler()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            dispatcher.Register(asyncHandler);

            // Act
            dispatcher.Handle(subscriber, topic);

            // Assert
            mockAsyncHandler.Verify(m => m.Handle(It.IsIn(topic)), Times.Once);
        }
コード例 #6
0
        public void Handle_WithBaseClassHandlerRegistered_DoesNothing()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            dispatcher.Register(handler);
            var topic = new SubTopic();

            // Act
            dispatcher.Handle(subscriber, topic);

            // Assert
            mockHandler.Verify(m => m.Handle(It.IsAny <Topic>()), Times.Never);
        }
コード例 #7
0
        public void Handle_WithHandlerDelegateRegistered_CallsHandler()
        {
            // Arrange
            var handled    = false;
            var dispatcher = new DITopicDispatcher(container);

            dispatcher.Register <Topic>(e => { handled = true; });

            // Act
            dispatcher.Handle(subscriber, topic);

            // Assert
            Assert.That(handled, Is.True);
        }
コード例 #8
0
        public void Handle_WithContainerResolvedHandler_ResolvesFromContainer()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            mockContainer.Setup(m => m.IsRegistered <ITopicHandler <Topic> >()).Returns(true);
            mockContainer.Setup(m => m.Resolve <ITopicHandler <Topic> >()).Returns(handler);
            dispatcher.Register <Topic, ITopicHandler <Topic> >();

            // Act
            dispatcher.Handle(subscriber, topic);

            // Assert
            mockContainer.Verify(m => m.Resolve <ITopicHandler <Topic> >(), Times.Once);
        }
コード例 #9
0
        public void Handle_WithContainerResolvedAsyncHandler_HandlesTopic()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            mockContainer.Setup(m => m.IsRegistered <IAsyncTopicHandler <Topic> >()).Returns(true);
            mockContainer.Setup(m => m.Resolve <IAsyncTopicHandler <Topic> >()).Returns(asyncHandler);
            dispatcher.RegisterAsync <Topic, IAsyncTopicHandler <Topic> >();

            // Act
            dispatcher.Handle(subscriber, topic);

            // Assert
            mockAsyncHandler.Verify(m => m.Handle(It.IsIn(topic)), Times.Once);
        }
コード例 #10
0
        public void Register_WithUnresolvedTopicHandler_CallsContainerIsRegistered()
        {
            // Arrange
            var dispatcher = new DITopicDispatcher(container);

            mockContainer
            .Setup(m => m.IsRegistered <ITopicHandler <Topic> >())
            .Returns(true);

            // Act
            dispatcher.Register <Topic, ITopicHandler <Topic> >();

            // Assert
            mockContainer.Verify(m => m.IsRegistered <ITopicHandler <Topic> >(), Times.Once);
        }