Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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 !);
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        public void PopulateThrowsException()
        {
            var sut = new ValueGeneratorBuildAction();

            Action action = () => sut.Populate(null !, null !);

            action.Should().Throw <NotSupportedException>();
        }
Exemplo n.º 10
0
        public void PriorityReturnsLowerThanCreationRuleBuildActionPriority()
        {
            var otherStep = new CreationRuleBuildAction();

            var sut = new ValueGeneratorBuildAction();

            sut.Priority.Should().BeLessThan(otherStep.Priority);
        }
Exemplo n.º 11
0
        public void BuildForTypeThrowsExceptionWithNullType()
        {
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var sut = new ValueGeneratorBuildAction();

            Action action = () => sut.Build(executeStrategy, (Type)null !);

            action.Should().Throw <ArgumentNullException>();
        }
Exemplo n.º 12
0
        public void BuildForTypeThrowsExceptionWithNullExecuteStrategy()
        {
            var type = typeof(Person);

            var sut = new ValueGeneratorBuildAction();

            Action action = () => sut.Build(null !, type);

            action.Should().Throw <ArgumentNullException>();
        }
Exemplo n.º 13
0
        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>();
        }
Exemplo n.º 14
0
        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>();
        }
Exemplo n.º 15
0
        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>();
        }
Exemplo n.º 16
0
        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>();
        }
Exemplo n.º 17
0
        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>();
        }
Exemplo n.º 18
0
        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>();
        }
Exemplo n.º 19
0
        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();
        }
Exemplo n.º 20
0
        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();
        }
Exemplo n.º 21
0
        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();
        }
Exemplo n.º 22
0
        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();
        }
Exemplo n.º 23
0
        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();
        }
Exemplo n.º 24
0
        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();
        }
Exemplo n.º 25
0
        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();
        }
Exemplo n.º 26
0
        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);
        }