public void CreateWitThUsesBuildStrategyToCreateInstanceWithParametersTest()
{
var value = Guid.NewGuid();
var expected = new ReadOnlyModel(value);
var build = Substitute.For<IBuildStrategy>();
var creator = Substitute.For<ITypeCreator>();
var creators = new List<ITypeCreator> {creator}.AsReadOnly();
build.TypeCreators.Returns(creators);
creator.CanCreate(typeof(ReadOnlyModel), null, Arg.Any<LinkedList<object>>()).Returns(true);
creator.CanPopulate(typeof(ReadOnlyModel), null, Arg.Any<LinkedList<object>>()).Returns(true);
creator.Create(typeof(ReadOnlyModel), null, Arg.Any<LinkedList<object>>(), value).Returns(expected);
creator.Populate(expected, Arg.Any<IExecuteStrategy>()).Returns(expected);
try
{
Model.BuildStrategy = build;
var actual = Model.CreateWith<ReadOnlyModel>(value);
actual.Value.Should().Be(value);
}
finally
{
Model.BuildStrategy = Model.DefaultBuildStrategy;
}
}