public void Should_get_TestDataBuilderPropertySetter_with_ITestDataBuilder_object()
        {
            // Arrange
            var value = new AddressBuilder();
            var factory = new PropertySetterFactory();

            // Act
            var propertySetter = factory.GetPropertySetter<Address>(value);

            // Assert
            propertySetter.ShouldNotBeNull();
            propertySetter.GetType().ShouldBeTheSameAs(typeof(TestDataBuilderPropertySetter<Address>));
        }
        public void Should_get_PassthroughPropertySetter_with_plain_object()
        {
            // Arrange
            var value = new object();
            var factory = new PropertySetterFactory();

            // Act
            var propertySetter = factory.GetPropertySetter<object>(value);

            // Assert
            propertySetter.ShouldNotBeNull();
            propertySetter.GetType().ShouldBeTheSameAs(typeof(PassthroughPropertySetter<object>));
        }
        public void Should_get_TestDataBuilderCollectionPropertySetter_with_collection_of_builders()
        {
            // Arrange
            var value = new List<AddressBuilder> {new AddressBuilder()};
            var factory = new PropertySetterFactory();

            // Act
            var propertySetter = factory.GetPropertySetter<Address>(value);

            // Assert
            propertySetter.ShouldNotBeNull();
            propertySetter.GetType().ShouldBeTheSameAs(
                typeof(TestDataBuilderCollectionPropertySetter<Address>));
        }
 public DefaultModelBinder(PropertySetterFactory propertySetterFactory, TypeBindingRepository typeBindingRepo)
 {
     this.propertySetterFactory = propertySetterFactory;
     this.typeBindingRepo       = typeBindingRepo;
 }