public void EvaluateShouldReturnExpectedResultForValidValue()
        {
            // arrange
            var rule = new CreditCardRule();
            var property = new Property<string>( "CreditCard", "4028-4816-3063-7116" );
            var expected = ValidationResult.Success;

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual );
        }
        public void EvaluateShouldUseCustomErrorMessage()
        {
            // arrange
            var expected = "Test";
            var rule = new CreditCardRule( expected );
            var property = new Property<string>( "CreditCard", "1234-5678-9012-3456" );

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual.ErrorMessage );
        }
        public void EvaluateShouldReturnExpectedResultForInvalidValue()
        {
            // arrange
            var rule = new CreditCardRule();
            var property = new Property<string>( "CreditCard", "1234-5678-9012-3456" );

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( "The CreditCard field is not a valid credit card number.", actual.ErrorMessage );
            Assert.Equal( 1, actual.MemberNames.Count() );
            Assert.Equal( "CreditCard", actual.MemberNames.Single() );
        }
        public void EvaluateShouldReturnSuccessForNull()
        {
            // arrange
            string value = null;
            var rule = new CreditCardRule();
            var property = new Property<string>( "CreditCard", value );
            var expected = ValidationResult.Success;

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual );
        }