Skip to content

Commit

Permalink
Added test for service provider in validation context
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasherceg committed Oct 10, 2024
1 parent c931ac6 commit 017c7a3
Showing 1 changed file with 37 additions and 2 deletions.
39 changes: 37 additions & 2 deletions src/Tests/ViewModel/ViewModelValidatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -542,6 +558,25 @@ public IEnumerable<ValidationResult> 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<IViewModelValidator>() == null)
{
return new ValidationResult("Service provider is not available");
}

return ValidationResult.Success;
}
}
}
}
}

0 comments on commit 017c7a3

Please sign in to comment.