public void CreateWithReturnsValueFromResolvedConstructorAndBuiltParametersTest()
{
var value = Guid.NewGuid();
var expected = new ReadOnlyModel(value);
var valueGenerators = new List<IValueGenerator>();
var typeCreators = new List<ITypeCreator>();
var buildStrategy = Substitute.For<IBuildStrategy>();
var resolver = Substitute.For<IConstructorResolver>();
var generator = Substitute.For<IValueGenerator>();
var typeCreator = Substitute.For<ITypeCreator>();
typeCreators.Add(typeCreator);
valueGenerators.Add(generator);
resolver.Resolve(typeof(ReadOnlyModel), Arg.Any<object[]>())
.Returns(typeof(ReadOnlyModel).GetConstructors()[0]);
buildStrategy.ConstructorResolver.Returns(resolver);
buildStrategy.TypeCreators.Returns(typeCreators.AsReadOnly());
buildStrategy.ValueGenerators.Returns(valueGenerators.AsReadOnly());
var target = new DefaultExecuteStrategy();
target.Initialize(buildStrategy, buildStrategy.GetBuildLog());
typeCreator.CanCreate(typeof(ReadOnlyModel), null, Arg.Any<LinkedList<object>>()).Returns(true);
typeCreator.Create(typeof(ReadOnlyModel), null, Arg.Any<LinkedList<object>>(), value).Returns(expected);
typeCreator.Populate(expected, target).Returns(expected);
typeCreator.AutoPopulate.Returns(true);
typeCreator.AutoDetectConstructor.Returns(true);
generator.IsSupported(typeof(Guid), "value", Arg.Any<LinkedList<object>>()).Returns(true);
generator.Generate(typeof(Guid), "value", Arg.Any<LinkedList<object>>()).Returns(value);
var actual = (ReadOnlyModel)target.CreateWith(typeof(ReadOnlyModel));
actual.Should().Be(expected);
actual.Value.Should().Be(value);
}