Example #1
0
        public void PopulateThrowsException()
        {
            var sut = new CircularReferenceBuildAction();

            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);
        }
Example #3
0
        public void BuildForTypeThrowsExceptionWithNullExecuteStrategy()
        {
            var type = typeof(string);

            var sut = new CircularReferenceBuildAction();

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

            action.Should().Throw <ArgumentNullException>();
        }
Example #4
0
        public void BuildForPropertyThrowsExceptionWithNullExecuteStrategy()
        {
            var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            var sut = new CircularReferenceBuildAction();

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

            action.Should().Throw <ArgumentNullException>();
        }
Example #5
0
        public void BuildForParameterThrowsExceptionWithNullType()
        {
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var sut = new CircularReferenceBuildAction();

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

            action.Should().Throw <ArgumentNullException>();
        }
Example #6
0
        public void BuildForParameterThrowsExceptionWithNullExecuteStrategy()
        {
            var parameterInfo = typeof(Person).GetConstructors()
                                .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();

            var sut = new CircularReferenceBuildAction();

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

            action.Should().Throw <ArgumentNullException>();
        }
Example #7
0
        public void GetBuildCapabilityForPropertyThrowsExceptionWithNullBuildChain()
        {
            var propertyInfo       = typeof(Person).GetProperty(nameof(Person.FirstName)) !;
            var buildConfiguration = new BuildConfiguration();

            var sut = new CircularReferenceBuildAction();

            Action action = () => sut.GetBuildCapability(buildConfiguration, null !, propertyInfo);

            action.Should().Throw <ArgumentNullException>();
        }
Example #8
0
        public void GetBuildCapabilityForTypeThrowsExceptionWithNullType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();

            var sut = new CircularReferenceBuildAction();

            Action action = () => sut.GetBuildCapability(buildConfiguration, buildChain, (Type)null !);

            action.Should().Throw <ArgumentNullException>();
        }
Example #9
0
        public void GetBuildCapabilityForTypeThrowsExceptionWithNullBuildChain()
        {
            var type = typeof(string);
            var buildConfiguration = new BuildConfiguration();

            var sut = new CircularReferenceBuildAction();

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

            action.Should().Throw <ArgumentNullException>();
        }
Example #10
0
        public void GetBuildCapabilityForTypeReturnsNullWhenBuildChainIsEmpty()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type);

            actual.Should().BeNull();
        }
Example #11
0
        public void GetBuildCapabilityForPropertyReturnsNullWhenBuildChainIsEmpty()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var propertyInfo       = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, propertyInfo);

            actual.Should().BeNull();
        }
Example #12
0
        public void GetBuildCapabilityForParameterThrowsExceptionWithNullBuildChain()
        {
            var parameterInfo = typeof(Person).GetConstructors()
                                .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();
            var buildConfiguration = new BuildConfiguration();

            var sut = new CircularReferenceBuildAction();

            Action action = () => sut.GetBuildCapability(buildConfiguration, null !, parameterInfo);

            action.Should().Throw <ArgumentNullException>();
        }
Example #13
0
        public void GetBuildCapabilityForParameterReturnsNullWhenBuildChainIsEmpty()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var parameterInfo      = typeof(Person).GetConstructors()
                                     .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, parameterInfo);

            actual.Should().BeNull();
        }
Example #14
0
        public void GetBuildCapabilityForPropertyReturnsNullWhenBuildChainDoesNotContainMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var propertyInfo       = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            buildChain.Push(Guid.NewGuid());

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, propertyInfo);

            actual.Should().BeNull();
        }
Example #15
0
        public void GetBuildCapabilityForTypeReturnsNullWhenBuildChainDoesNotContainMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            buildChain.Push(Guid.NewGuid());

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type);

            actual.Should().BeNull();
        }
Example #16
0
        public void BuildForPropertyReturnsNullWhenNoMatchingTypeFound()
        {
            var buildChain   = new BuildHistory();
            var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.Build(executeStrategy, propertyInfo);

            actual.Should().BeNull();
        }
Example #17
0
        public void BuildForTypeReturnsNullWhenNoMatchingTypeFound()
        {
            var buildChain = new BuildHistory();
            var type       = typeof(string);

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.Build(executeStrategy, type);

            actual.Should().BeNull();
        }
Example #18
0
        public void BuildForParameterReturnsNullWhenNoMatchingTypeFound()
        {
            var buildChain    = new BuildHistory();
            var parameterInfo = typeof(Person).GetConstructors()
                                .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.Build(executeStrategy, parameterInfo);

            actual.Should().BeNull();
        }
Example #19
0
        public void GetBuildCapabilityForTypeReturnsCapabilityWhenBuildChainContainsMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(Guid.NewGuid().ToString());
            buildChain.Push(DateTimeOffset.UtcNow);

            var sut = new CircularReferenceBuildAction();

            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().BeAssignableTo <IBuildCapability>();
        }
Example #20
0
        public void GetBuildCapabilityForParameterReturnsCapabilityWhenBuildChainContainsMatchingType()
        {
            var parameterInfo = typeof(Person).GetConstructors()
                                .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(Guid.NewGuid().ToString());
            buildChain.Push(DateTimeOffset.UtcNow);

            var sut = new CircularReferenceBuildAction();

            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().BeAssignableTo <IBuildCapability>();
        }
Example #21
0
        public void GetBuildCapabilityReturnsCapabilityWithoutPopulateSupport()
        {
            var value = new Person();
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(Guid.NewGuid().ToString());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type) !;

            Action action = () => actual.Populate(executeStrategy, value);

            action.Should().Throw <NotSupportedException>();
        }
Example #22
0
        public void PriorityReturnsMaximumValue()
        {
            var sut = new CircularReferenceBuildAction();

            sut.Priority.Should().Be(int.MaxValue);
        }