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();
}