public void CreateControllerWillInvokeFactoriesWithCorrectArguments(
     string controllerName, 
     RequestContext requestContext,
     [Frozen]Mock<IControllerFactory> factoryMock,
     CompositeControllerFactory sut)
 {
     sut.CreateController(requestContext, controllerName);
     factoryMock.Verify(x => x.CreateController(requestContext, controllerName));
 }
 public void FactoriesWillMatchParamsArray(IControllerFactory[] expectedFactories)
 {
     // Fixture setup
     var sut = new CompositeControllerFactory(expectedFactories);
     // Exercise system
     var result = sut.Factories;
     // Verify outcome
     Assert.True(expectedFactories.SequenceEqual(result));
     // Teardown
 }
        public void CreateControllerWillReturnFirstControllerResultFromFactories(
            string controllerName, 
            RequestContext requestContext,
            IController expectedResult,
            Mock<IControllerFactory>[] factoryStubs)
        {
            // Fixture Setup
            factoryStubs[0]
                .Setup(x => x.CreateController(requestContext, controllerName))
                .Returns((IController)null);
            factoryStubs[1]
                .Setup(x => x.CreateController(requestContext, controllerName))
                .Returns(expectedResult);
            factoryStubs[2]
                .Setup(x => x.CreateController(requestContext, controllerName))
                .Returns((IController)null);

            var sut = new CompositeControllerFactory(factoryStubs.Select(x => x.Object));
            // Exercise system
            var result = sut.CreateController(requestContext, controllerName);
            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
 public void FactoriesWillNotBeNullWhenSutIsCreatedWithDefaultConstructor(
     CompositeControllerFactory sut)
 {
     IEnumerable<IControllerFactory> result = sut.Factories;
     Assert.NotNull(result);
 }
 public void SutIsControllerFactory(CompositeControllerFactory sut)
 {
     Assert.IsAssignableFrom<IControllerFactory>(sut);
 }