From 74dc13f2b808774659b5e5e0525fab80c7b68538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Herceg?= Date: Thu, 10 Oct 2024 14:01:20 +0200 Subject: [PATCH] Added test for service provider in validation context --- .../ViewModel/ViewModelValidatorTests.cs | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/Tests/ViewModel/ViewModelValidatorTests.cs b/src/Tests/ViewModel/ViewModelValidatorTests.cs index b0f1cdb4a8..add6de242c 100644 --- a/src/Tests/ViewModel/ViewModelValidatorTests.cs +++ b/src/Tests/ViewModel/ViewModelValidatorTests.cs @@ -446,6 +446,22 @@ public void ViewModelValidator_AttemptToPassOldPaths(string path) } + [TestMethod] + public void ViewModelValidator_ServiceProvider() + { + var testViewModel = new TestViewModel8(); + var validator = CreateValidator(); + var expander = CreateErrorPathExpander(); + var modelState = new ModelState { ValidationTarget = testViewModel }; + + var errors = validator.ValidateViewModel(testViewModel).OrderBy(n => n.PropertyPath); + modelState.ErrorsInternal.AddRange(errors); + expander.Expand(modelState, testViewModel); + var results = modelState.Errors.OrderBy(n => n.PropertyPath).ToList(); + + Assert.AreEqual(0, results.Count); + } + public class TestViewModel : DotvvmViewModelBase { [Required] @@ -497,7 +513,7 @@ protected override ValidationResult IsValid(object value, ValidationContext vali var entity = (TestViewModel4Child)validationContext.ObjectInstance; if (entity.IsChecked && string.IsNullOrEmpty(entity.ConditionalRequired)) { - return new ValidationResult("Value is required when the field is checked!", new[] { validationContext.MemberName }); + return new ValidationResult("Value is required when the field is checked!", new[] { validationContext.MemberName }); } return base.IsValid(value, validationContext); @@ -542,6 +558,25 @@ public IEnumerable Validate(ValidationContext validationContex } } } - } + + public class TestViewModel8 + { + [ServiceProviderTest] + public int? Id { get; set; } + + public class ServiceProviderTestAttribute : ValidationAttribute + { + protected override ValidationResult IsValid(object value, ValidationContext validationContext) + { + if (validationContext.GetService() == null) + { + return new ValidationResult("Service provider is not available"); + } + + return ValidationResult.Success; + } + } + } + } }