public void ApplyShouldReturnSelf()
        {
            // arrange
            var expected = new PropertyValidator<IComponent, ISite>( c => c.Site, "Site" );

            // act
            var actual = expected.Apply( new RequiredRule<ISite>() );

            // assert
            Assert.Same( expected, actual );
        }
        public void ValidateValueShouldEvaluateValue()
        {
            // arrange
            var propertyValidator = new PropertyValidator<IComponent, ISite>( c => c.Site, "Site" );
            IPropertyValidator validator = propertyValidator;
            IPropertyValidator<IComponent> validatorOfT = propertyValidator;
            ISite value = null;

            propertyValidator.Apply( new RequiredRule<ISite>() );

            // act
            var actual1 = validator.ValidateValue( value );
            var actual2 = validatorOfT.ValidateValue( value );

            // assert
            Assert.Equal( 1, actual1.Count );
            Assert.Equal( 1, actual2.Count );
        }
        public void ValidateObjectShouldEvaluateInstance()
        {
            // arrange
            var instance = new Mock<IComponent>().Object;
            var propertyValidator = new PropertyValidator<IComponent, ISite>( c => c.Site, "Site" );
            IPropertyValidator validator = propertyValidator;
            IPropertyValidator<IComponent> validatorOfT = propertyValidator;

            propertyValidator.Apply( new RequiredRule<ISite>() );

            // act
            var actual1 = validator.ValidateObject( instance );
            var actual2 = validatorOfT.ValidateObject( instance );

            // assert
            Assert.Equal( 1, actual1.Count );
            Assert.Equal( 1, actual2.Count );
        }