Exemplo n.º 1
0
        public void SenderFor_WhenCalledTwice_CallsFactoryOnce()
        {
            // Arrange
            var cache = new SenderCache(requestRouter, monitorCache);

            cache.AddFactory(factory);

            // Act
            var sender1 = cache.SenderFor <object>();
            var sender2 = cache.SenderFor <object>();

            // Assert
            mockFactory.Verify(m => m.CreateSender(It.IsIn(address)), Times.Once);
        }
Exemplo n.º 2
0
        public void SenderFor_WhenCalledTwice_ReturnsTheSameInstance()
        {
            // Arrange
            var cache = new SenderCache(requestRouter, monitorCache);

            cache.AddFactory(factory);

            // Act
            var sender1 = cache.SenderFor <object>();
            var sender2 = cache.SenderFor <object>();

            // Assert
            Assert.That(sender1, Is.SameAs(sender2));
        }
Exemplo n.º 3
0
        public void SenderFor_WithNoRouting_ThrowsMissingFactoryException()
        {
            // Arrange
            var cache = new SenderCache(requestRouter, monitorCache);

            // Act
            TestDelegate senderFor = () => cache.SenderFor <object>();

            // Assert
            Assert.That(senderFor, Throws.TypeOf <MissingFactoryException>());
        }
Exemplo n.º 4
0
        public void SenderFor_WithNoPreresolvedSender_AddsMonitorToMonitorCache()
        {
            // Arrange
            var cache = new SenderCache(requestRouter, monitorCache);

            cache.AddFactory(factory);

            // Act
            var resolvedSender = cache.SenderFor <object>();

            // Assert
            mockMonitorCache.Verify(m => m.AddMonitor(It.IsIn(senderMonitor)), Times.Once);
        }
Exemplo n.º 5
0
        public void SenderFor_WithNoFactory_ThrowsMissingFactoryException()
        {
            // Arrange
            var cache         = new SenderCache(requestRouter, monitorCache);
            var senderRouting = SenderRouting.For <ISender>(address);

            mockRequestRouter
            .Setup(m => m.RoutingFor <object>(out senderRouting))
            .Returns(true);

            // Act
            TestDelegate senderFor = () => cache.SenderFor <object>();

            // Assert
            Assert.That(senderFor, Throws.TypeOf <MissingFactoryException>());
        }
Exemplo n.º 6
0
        public void SenderFor_WithRoutingAndFactory_ReturnsSender()
        {
            // Arrange
            var cache         = new SenderCache(requestRouter, monitorCache);
            var senderRouting = SenderRouting.For <ISender>(address);

            mockRequestRouter
            .Setup(m => m.RoutingFor <object>(out senderRouting))
            .Returns(true);

            mockFactory
            .Setup(m => m.CreateSender(It.IsAny <IAddress>()))
            .Returns(sender);

            cache.AddFactory(factory);

            // Act
            var resolvedSender = cache.SenderFor <object>();

            // Assert
            Assert.That(resolvedSender, Is.EqualTo(sender));
        }