public void BuildThrowsExceptionWhenRuleFails() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(propertyInfo).Returns(true); rule.Create(executeStrategy, propertyInfo).Throws <TimeoutException>(); var sut = new CreationRuleBuildAction(); Action action = () => sut.Build(executeStrategy, propertyInfo); var exception = action.Should().Throw <BuildException>().Which; exception.InnerException.Should().BeOfType <TimeoutException>(); _output.WriteLine(exception.Message); }
public void GetBuildCapabilityForTypeReturnsCapabilityWhenMatchingRuleFound() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(type).Returns(true); rule.Create(executeStrategy, type).Returns(expected); var sut = new CreationRuleBuildAction(); 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(rule.GetType()); }
public void BuildForTypeReturnsValueFromRuleWithHighestPriority() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var firstRule = Substitute.For <ICreationRule>(); var secondRule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(firstRule); buildConfiguration.CreationRules.Add(secondRule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); firstRule.Priority.Returns(10); firstRule.IsMatch(type).Returns(true); secondRule.Priority.Returns(20); secondRule.IsMatch(type).Returns(true); secondRule.Create(executeStrategy, type).Returns(expected); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().Be(expected); }
public void BuildForParameterInfoReturnsValueFromRuleWithHighestPriority() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var firstRule = Substitute.For <ICreationRule>(); var secondRule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(firstRule); buildConfiguration.CreationRules.Add(secondRule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); firstRule.Priority.Returns(10); firstRule.IsMatch(parameterInfo).Returns(true); secondRule.Priority.Returns(20); secondRule.IsMatch(parameterInfo).Returns(true); secondRule.Create(executeStrategy, parameterInfo).Returns(expected); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, parameterInfo); actual.Should().Be(expected); }
public void GetBuildCapabilityForParameterInfoReturnsCapabilityWhenMatchingRuleFound() { 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 rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(parameterInfo).Returns(true); rule.Create(executeStrategy, parameterInfo).Returns(expected); var sut = new CreationRuleBuildAction(); 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(rule.GetType()); }
public void PriorityReturnsLowerThanCreationRuleBuildActionPriority() { var otherStep = new CreationRuleBuildAction(); var sut = new ValueGeneratorBuildAction(); sut.Priority.Should().BeLessThan(otherStep.Priority); }
public void PopulateThrowsException() { var sut = new CreationRuleBuildAction(); Action action = () => sut.Populate(null !, null !); action.Should().Throw <NotSupportedException>(); }
public void PriorityReturnsLowerThanCircularReferencePriority() { var circularReferenceStep = new CircularReferenceBuildAction(); var sut = new CreationRuleBuildAction(); sut.Priority.Should().BeLessThan(circularReferenceStep.Priority); }
public void BuildForPropertyInfoThrowsExceptionWithNullExecuteStrategy() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var sut = new CreationRuleBuildAction(); Action action = () => sut.Build(null !, propertyInfo); action.Should().Throw <ArgumentNullException>(); }
public void BuildForTypeThrowsExceptionWithNullExecuteStrategy() { var type = typeof(Person); var sut = new CreationRuleBuildAction(); Action action = () => sut.Build(null !, type); action.Should().Throw <ArgumentNullException>(); }
public void BuildForTypeThrowsExceptionWithNullType() { var executeStrategy = Substitute.For <IExecuteStrategy>(); var sut = new CreationRuleBuildAction(); Action action = () => sut.Build(executeStrategy, (Type)null !); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForTypeThrowsExceptionWithNullBuildChain() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var sut = new CreationRuleBuildAction(); Action action = () => sut.GetBuildCapability(buildConfiguration, null !, type); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForPropertyInfoThrowsExceptionWithNullBuildConfiguration() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildChain = new BuildHistory(); var sut = new CreationRuleBuildAction(); Action action = () => sut.GetBuildCapability(null !, buildChain, propertyInfo); action.Should().Throw <ArgumentNullException>(); }
public void GetBuildCapabilityForTypeThrowsExceptionWithNullType() { var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var sut = new CreationRuleBuildAction(); Action action = () => sut.GetBuildCapability(buildConfiguration, buildChain, (Type)null !); action.Should().Throw <ArgumentNullException>(); }
public void BuildForParameterInfoThrowsExceptionWithNullExecuteStrategy() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var sut = new CreationRuleBuildAction(); Action action = () => sut.Build(null !, parameterInfo); 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 CreationRuleBuildAction(); Action action = () => sut.GetBuildCapability(null !, buildChain, parameterInfo); action.Should().Throw <ArgumentNullException>(); }
public void BuildForPropertyInfoReturnsNullWhenNoRulesExist() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, propertyInfo !); actual.Should().BeNull(); }
public void BuildForTypeReturnsNullWhenNoRulesExist() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().BeNull(); }
public void BuildForParameterInfoReturnsNullWhenNoRulesExist() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, parameterInfo); actual.Should().BeNull(); }
public void GetBuildCapabilityForTypeReturnsNullWhenNoMatchingRuleFound() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var buildChain = new BuildHistory(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); var sut = new CreationRuleBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type); actual.Should().BeNull(); }
public void GetBuildCapabilityForParameterInfoReturnsNullWhenNoMatchingRuleFound() { 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 rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); var sut = new CreationRuleBuildAction(); var actual = sut.GetBuildCapability(buildConfiguration, buildChain, parameterInfo); actual.Should().BeNull(); }
public void BuildForTypeReturnsRuleValueWhenMatchingRuleFound() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(type).Returns(true); rule.Create(executeStrategy, type).Returns(expected); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, type); actual.Should().Be(expected); }
public void BuildForPropertyInfoReturnsRuleValueWhenMatchingRuleFound() { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var buildConfiguration = new BuildConfiguration(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(propertyInfo !).Returns(true); rule.Create(executeStrategy, propertyInfo !).Returns(expected); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, propertyInfo !); actual.Should().Be(expected); }
public void BuildForParameterInfoReturnsRuleValueWhenMatchingRuleFound() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var expected = new Person(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(parameterInfo).Returns(true); rule.Create(executeStrategy, parameterInfo).Returns(expected); var sut = new CreationRuleBuildAction(); var actual = sut.Build(executeStrategy, parameterInfo); actual.Should().Be(expected); }
public void BuildLogsValueCreation() { var type = typeof(Person); var buildConfiguration = new BuildConfiguration(); var expected = new Person(); var buildLog = Substitute.For <IBuildLog>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(buildLog); rule.IsMatch(type).Returns(true); rule.Create(executeStrategy, type).Returns(expected); var sut = new CreationRuleBuildAction(); sut.Build(executeStrategy, type); buildLog.Received().CreatingValue(type, rule.GetType(), null !); }
public void BuildRethrowsBuildException() { var parameterInfo = typeof(Person).GetConstructors() .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First(); var buildConfiguration = new BuildConfiguration(); var executeStrategy = Substitute.For <IExecuteStrategy>(); var rule = Substitute.For <ICreationRule>(); buildConfiguration.CreationRules.Add(rule); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.Log.Returns(_buildLog); rule.IsMatch(parameterInfo).Returns(true); rule.Create(executeStrategy, parameterInfo).Throws <BuildException>(); var sut = new CreationRuleBuildAction(); Action action = () => sut.Build(executeStrategy, parameterInfo); var exception = action.Should().Throw <BuildException>().Which; _output.WriteLine(exception.Message); }