public void CreateParametersCanReturnNullParameter() { var buildHistory = new BuildHistory(); var method = typeof(SimpleConstructor).GetConstructors().First(); var parameters = method.GetParameters().OrderBy(x => x.Name); var parameterCapability = Substitute.For <IBuildCapability>(); var processor = Substitute.For <IBuildProcessor>(); var parameterResolver = Substitute.For <IParameterResolver>(); var buildConfiguration = Substitute.For <IBuildConfiguration>(); var sut = new DefaultExecuteStrategy(buildHistory, _buildLog, processor); parameterCapability.AutoPopulate.Returns(false); parameterCapability.SupportsCreate.Returns(true); parameterCapability.SupportsPopulate.Returns(false); parameterCapability.ImplementedByType.Returns(GetType()); parameterCapability.CreateParameter(sut, Arg.Any <ParameterInfo>(), null).Returns(null); processor.GetBuildCapability(sut, BuildRequirement.Create, Arg.Any <ParameterInfo>()).Returns(parameterCapability); parameterResolver.GetOrderedParameters(buildConfiguration, method).Returns(parameters); buildConfiguration.ParameterResolver.Returns(parameterResolver); sut.Initialize(buildConfiguration); var actual = sut.CreateParameters(method) !; actual.Should().HaveCount(1); actual[0].Should().BeNull(); }
public void CreateParametersReturnsNullWhenNoOrderedParametersReturned() { var buildHistory = new BuildHistory(); var method = typeof(SlimModel).GetConstructors().First(); var parameters = Array.Empty <ParameterInfo>(); var processor = Substitute.For <IBuildProcessor>(); var parameterResolver = Substitute.For <IParameterResolver>(); var buildConfiguration = Substitute.For <IBuildConfiguration>(); parameterResolver.GetOrderedParameters(buildConfiguration, method).Returns(parameters); buildConfiguration.ParameterResolver.Returns(parameterResolver); var sut = new DefaultExecuteStrategy(buildHistory, _buildLog, processor); sut.Initialize(buildConfiguration); var actual = sut.CreateParameters(method); actual.Should().BeNull(); }
public void CreateParametersReturnsOriginalParameterOrderCreatedInOrderOfPriority() { var buildHistory = new BuildHistory(); var method = typeof(OrderedConstructorParameters).GetConstructors().First(); var parameters = method.GetParameters().OrderBy(x => x.Name); var parameterCapability = Substitute.For <IBuildCapability>(); var processor = Substitute.For <IBuildProcessor>(); var parameterResolver = Substitute.For <IParameterResolver>(); var buildConfiguration = Substitute.For <IBuildConfiguration>(); var sut = new DefaultExecuteStrategy(buildHistory, _buildLog, processor); parameterCapability.AutoPopulate.Returns(false); parameterCapability.SupportsCreate.Returns(true); parameterCapability.SupportsPopulate.Returns(false); parameterCapability.ImplementedByType.Returns(GetType()); parameterCapability .CreateParameter(sut, Arg.Is <ParameterInfo>(x => x.ParameterType == typeof(string)), null) .Returns("first", "second", "third", "fourth"); parameterCapability .CreateParameter(sut, Arg.Is <ParameterInfo>(x => x.ParameterType == typeof(Gender)), null) .Returns(Gender.Female); processor.GetBuildCapability(sut, BuildRequirement.Create, Arg.Any <ParameterInfo>()).Returns(parameterCapability); parameterResolver.GetOrderedParameters(buildConfiguration, method).Returns(parameters); buildConfiguration.ParameterResolver.Returns(parameterResolver); sut.Initialize(buildConfiguration); var actual = sut.CreateParameters(method) !; actual.Should().HaveCount(5); actual[0].Should().Be("second"); actual[1].Should().Be("first"); actual[2].Should().Be("fourth"); actual[3].Should().Be("third"); actual[4].Should().Be(Gender.Female); }