public static void CanRetrievePropertyValues()
        {
            const string lastName = "bar";
            const string firstName = "Foo";
            var instance = new MyTestType { FirstName = firstName, LastName = lastName };
            var propertyValues = DataAnnotationsValidator.GetPropertyValues(instance);

            Assert.Equal(firstName, propertyValues[nameof(instance.FirstName)]);
            Assert.Equal(lastName, propertyValues[nameof(instance.LastName)]);
        }
        public static void CanGetAllPropertyNames()
        {
            var instance = new MyTestType();
            var publicProperties = DataAnnotationsValidator.GetAllPublicPropertyNamesToValidate(instance);
            var allNames = publicProperties.Select(p => p.Name).ToArray();

            Assert.Contains(nameof(instance.FirstName), allNames);
            Assert.Contains(nameof(instance.LastName), allNames);
            Assert.DoesNotContain("SecretCode", allNames);
        }
        public void TestYourAssumptionWorks()
        {
            var instance = new MyTestType
            {
                FirstName = "a"
            };
            var context = new ValidationContext(instance)
            {
                MemberName = nameof(instance.FirstName)
            };
            var objectResults = new List<ValidationResult>();
            var isObjectValid = Validator.TryValidateObject(instance, context, objectResults);

            var propertyResults = new List<ValidationResult>();
            var isPropertyValid = Validator.TryValidateProperty(instance.FirstName, context, propertyResults);
        }
 public void ValidateProperty(MyTestType toValidate,
     string propertyToValidate,
     Func<MyTestType, object> valueProvider,
     bool shouldBeValid)
 {
     var validator = new DataAnnotationsValidatorFixture().Build();
     var result = validator.ValidateProperty(toValidate, propertyToValidate, valueProvider(toValidate));
     if (shouldBeValid)
     {
         Assert.True(result.IsValid);
     }
     else
     {
         Assert.False(result.IsValid);
         Assert.True(result.ValidationResults.Any());
     }
 }