ModelBuilder.UnitTests.DefaultExecuteStrategyTests.PopulatePushesInstanceIntoBuildChainWhileCreatingTest C# (CSharp) Method

PopulatePushesInstanceIntoBuildChainWhileCreatingTest() private method

        public void PopulatePushesInstanceIntoBuildChainWhileCreatingTest()
        {
            var instance = new SlimModel();
            var testPassed = false;

            var creator = Substitute.For<ITypeCreator>();
            var generator = Substitute.For<IValueGenerator>();
            var buildStrategy = Substitute.For<IBuildStrategy>();

            var target = new DefaultExecuteStrategy();

            target.Initialize(buildStrategy, buildStrategy.GetBuildLog());

            buildStrategy.CreationRules.Returns(new List<CreationRule>().AsReadOnly());
            buildStrategy.ValueGenerators.Returns(
                new List<IValueGenerator>
                {
                    generator
                }.AsReadOnly());
            buildStrategy.TypeCreators.Returns(
                new List<ITypeCreator>
                {
                    creator
                }.AsReadOnly());
            creator.CanCreate(typeof(SlimModel), null, Arg.Any<LinkedList<object>>()).Returns(true);
            creator.Create(typeof(SlimModel), null, Arg.Any<LinkedList<object>>()).Returns(instance);
            creator.AutoPopulate.Returns(true);
            generator.When(
                x =>
                    x.Generate(
                        typeof(Guid),
                        nameof(SlimModel.Value),
                        Arg.Is<LinkedList<object>>(y => y.Last.Value == instance))).Do(
                x =>
                {
                    target.BuildChain.Should().HaveCount(1);
                    target.BuildChain.First().Should().BeOfType<SlimModel>();
                    testPassed = true;
                });

            generator.IsSupported(
                typeof(Guid),
                nameof(SlimModel.Value),
                Arg.Is<LinkedList<object>>(x => x.Last.Value == instance)).Returns(true);

            target.Create(typeof(SlimModel));

            testPassed.Should().BeTrue();
        }
DefaultExecuteStrategyTests