public void AsyncRequestDispatcher_with_FakeServiceRegistry()
        {
            // Arrange
            var serviceRegistry = MockRepository.GenerateStrictMock<IServiceRegistry>();
            serviceRegistry.Stub(s => s.GetAsyncService<CapitalizeRequest, CapitalizeResponse>())
                .Return(new CapitalizationService());

            var sut = new AsyncRequestDispatcher(serviceRegistry);

            var request = new CapitalizeRequest { Blob = "this is lowercase" };

            // Act
            var response = sut.Execute(request).Result;

            // Assert
            Assert.AreEqual("THIS IS LOWERCASE", response.CapitalizedBlob);
        }
        public void AsyncRequestDispatcher_with_Unity_LowerCasify()
        {
            // Arrange
            using (var container = new UnityContainer())
            {
                container.RegisterType<IAsyncExecutableService<LowerCasifyRequest, LowerCasifyResponse>, LowerCaseService>();

                var serviceRegistry = new UnityServiceRegistry(container);
                var sut = new AsyncRequestDispatcher(serviceRegistry);

                var request = new LowerCasifyRequest() { Blob = "this is UPPERCASE" };

                // Act
                var response = sut.Execute(request).Result;

                // Assert
                Assert.AreEqual("this is uppercase", response.LowerCasedBlob);
            }
        }
        public void AsyncRequestDispatcher_with_Unity_Capitalize()
        {
            // Arrange
            using (var container = new UnityContainer())
            {
                container.RegisterType<IAsyncExecutableService<CapitalizeRequest, CapitalizeResponse>, CapitalizationService>();

                var serviceRegistry = new UnityServiceRegistry(container);
                var sut = new AsyncRequestDispatcher(serviceRegistry);

                var request = new CapitalizeRequest { Blob = "this is lowercase" };

                // Act
                var response = sut.Execute(request).Result;

                // Assert
                Assert.AreEqual("THIS IS LOWERCASE", response.CapitalizedBlob);
            }
        }
        public void AsyncRequestDispatcher_with_Unity_not_found()
        {
            // Arrange
            using (var container = new UnityContainer())
            {
                container.RegisterType<IAsyncExecutableService<CapitalizeRequest, CapitalizeResponse>, CapitalizationService>();
                var serviceRegistry = new UnityServiceRegistry(container);
                var sut = new AsyncRequestDispatcher(serviceRegistry);

                var request = new LowerCasifyRequest() { Blob = "ThisIsCamelCase" };

                // Act
                sut.Execute(request);
            }
        }