public void GetBuildCapabilityForParameterInfoReturnsGeneratorValueWhenMatchingGeneratorFound() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); generator.IsMatch(buildChain, parameterInfo).Returns(true); generator.Generate(executeStrategy, parameterInfo).Returns(expected); var sut = new ValueGeneratorBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, parameterInfo) !; actual.Should().NotBeNull(); actual.SupportsCreate.Should().BeTrue(); actual.SupportsPopulate.Should().BeFalse(); actual.AutoPopulate.Should().BeFalse(); actual.ImplementedByType.Should().Be(generator.GetType()); }
public void BuildForParameterInfoReturnsValueFromGeneratorWithHighestPriority() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var firstGenerator = Substitute.For <IValueGenerator>(); var secondGenerator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(firstGenerator); buildConfiguration.ValueGenerators.Add(secondGenerator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); firstGenerator.Priority.Returns(10); firstGenerator.IsMatch(buildChain, parameterInfo).Returns(true); secondGenerator.Priority.Returns(20); secondGenerator.IsMatch(buildChain, parameterInfo).Returns(true); secondGenerator.Generate(executeStrategy, parameterInfo) .Returns(expected); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, parameterInfo); actual.Should().Be(expected); }
public void BuildRethrowsBuildException() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var buildChain = Substitute.For <IBuildChain>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); generator.IsMatch(buildChain, parameterInfo).Returns(true); generator.Generate(executeStrategy, parameterInfo) .Throws <BuildException>(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Build(executeStrategy, parameterInfo); var exception = action.Should().Throw <BuildException>().Which; _output.WriteLine(exception.Message); }
public void BuildThrowsExceptionWhenGeneratorFails() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildConfiguration = new BuildConfiguration(); var buildChain = Substitute.For <IBuildChain>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); generator.IsMatch(buildChain, propertyInfo).Returns(true); generator.Generate(executeStrategy, propertyInfo) .Throws <TimeoutException>(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Build(executeStrategy, propertyInfo); var exception = action.Should().Throw <BuildException>().Which; exception.InnerException.Should().BeOfType <TimeoutException>(); _output.WriteLine(exception.Message); }
public void BuildForTypeReturnsValueFromGeneratorWithHighestPriority() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var firstGenerator = Substitute.For <IValueGenerator>(); var secondGenerator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(firstGenerator); buildConfiguration.ValueGenerators.Add(secondGenerator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); firstGenerator.Priority.Returns(10); firstGenerator.IsMatch(buildChain, type).Returns(true); secondGenerator.Priority.Returns(20); secondGenerator.IsMatch(buildChain, type).Returns(true); secondGenerator.Generate(executeStrategy, type).Returns(expected); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().Be(expected); }
public void BuildLogsValueCreation() { var type = typeof(string); var buildConfiguration = new BuildConfiguration(); var expected = Guid.NewGuid().ToString(); var buildLog = Substitute.For <IBuildLog>(); var buildChain = Substitute.For <IBuildChain>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(buildLog); generator.IsMatch(buildChain, type).Returns(true); generator.Generate(executeStrategy, type).Returns(expected); var sut = new ValueGeneratorBuildAction(); sut.Build(executeStrategy, type); buildLog.Received().CreatingValue(type, generator.GetType(), null !); }
public void GetBuildCapabilityForTypeReturnsCapabilityWhenMatchingGeneratorFound() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); generator.IsMatch(buildChain, type).Returns(true); generator.Generate(executeStrategy, type).Returns(expected); var sut = new ValueGeneratorBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type) !; actual.Should().NotBeNull(); actual.SupportsCreate.Should().BeTrue(); actual.SupportsPopulate.Should().BeFalse(); actual.AutoPopulate.Should().BeFalse(); actual.ImplementedByType.Should().Be(generator.GetType()); }
public void BuildForParameterInfoReturnsGeneratorValueWhenMatchingGeneratorFound() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); executeStrategy.Configuration.Returns(buildConfiguration); generator.IsMatch(buildChain, parameterInfo).Returns(true); generator.Generate(executeStrategy, parameterInfo).Returns(expected); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, parameterInfo); actual.Should().Be(expected); }
public void PopulateThrowsException() { var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Populate(null !, null !); action.Should().Throw <NotSupportedException>(); }
public void PriorityReturnsLowerThanCreationRuleBuildActionPriority() { var otherStep = new CreationRuleBuildAction(); var sut = new ValueGeneratorBuildAction(); sut.Priority.Should().BeLessThan(otherStep.Priority); }
public void BuildForTypeThrowsExceptionWithNullType() { var executeStrategy = Substitute.For <IExecuteStrategy>(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Build(executeStrategy, (Type)null !); action.Should().Throw <ArgumentNullException>(); }
public void BuildForTypeThrowsExceptionWithNullExecuteStrategy() { var type = typeof(Person); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Build(null !, type); action.Should().Throw <ArgumentNullException>(); }
public void BuildForPropertyInfoThrowsExceptionWithNullExecuteStrategy() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Build(null !, propertyInfo); action.Should().Throw <ArgumentNullException>(); }
public void BuildForParameterInfoThrowsExceptionWithNullExecuteStrategy() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.Build(null !, parameterInfo); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForTypeThrowsExceptionWithNullBuildChain() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.GetBuildCapability(buildConfiguration, null !, type); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForTypeThrowsExceptionWithNullType() { var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.GetBuildCapability(buildConfiguration, buildChain, (Type)null !); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForPropertyInfoThrowsExceptionWithNullBuildConfiguration() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildChain = new BuildHistory(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.GetBuildCapability(null !, buildChain, propertyInfo); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForParameterInfoThrowsExceptionWithNullBuildConfiguration() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildChain = new BuildHistory(); var sut = new ValueGeneratorBuildAction(); Action action = () => sut.GetBuildCapability(null !, buildChain, parameterInfo); action.Should().Throw <ArgumentNullException>(); }
public void BuildForTypeReturnsNullWhenNoGeneratorsExist() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().BeNull(); }
public void GetBuildCapabilityForTypeReturnsNullWhenNoGeneratorsExist() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); var sut = new ValueGeneratorBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type); actual.Should().BeNull(); }
public void GetBuildCapabilityForPropertyInfoReturnsNullWhenNoGeneratorsExist() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); var sut = new ValueGeneratorBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, propertyInfo); actual.Should().BeNull(); }
public void BuildForParameterInfoReturnsNullWhenNoGeneratorsExist() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, parameterInfo); actual.Should().BeNull(); }
public void BuildForTypeReturnsNullWhenNoMatchingGeneratorFound() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().BeNull(); }
public void BuildForPropertyInfoReturnsNullWhenNoMatchingGeneratorFound() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, propertyInfo); actual.Should().BeNull(); }
public void GetBuildCapabilityForParameterInfoReturnsNullWhenNoMatchingGeneratorFound() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); var sut = new ValueGeneratorBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, parameterInfo); actual.Should().BeNull(); }
public void BuildForTypeReturnsGeneratorValueWhenMatchingGeneratorFound() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var generator = Substitute.For <IValueGenerator>(); buildConfiguration.ValueGenerators.Add(generator); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); executeStrategy.Log.Returns(_buildLog); generator.IsMatch(buildChain, type).Returns(true); generator.Generate(executeStrategy, type).Returns(expected); var sut = new ValueGeneratorBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().Be(expected); }