public void GetErrorMessage_DontLocalizeWhenErrorMessageResourceTypeGiven() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var modelMetadata = metadataProvider.GetMetadataForProperty(typeof(string), "Length"); var stringLocalizer = new Mock <IStringLocalizer>(MockBehavior.Loose); var attribute = new TestValidationAttribute(); var adapter = new TestValidationAttributeAdapter(attribute, stringLocalizer.Object); var actionContext = new ActionContext(); var validationContext = new ModelValidationContext( actionContext, modelMetadata, metadataProvider, container: null, model: null); // Act adapter.GetErrorMessage(validationContext); // Assert Assert.True(attribute.Formatted); }
public void Should_return_true_when_attribute_is_of_type_TValidationAttribute() { // Arrange var attribute = new TestValidationAttribute(); // Act var result = AdapterUnderTest.CanHandle(attribute); // Assert Assert.True(result); }
public void Should_call_InternalGetErrorMessageResourceName_of_sub_class() { // Arrange var attribute = new TestValidationAttribute(); var expectedAttribute = attribute; var expectedErrorMessageResourceName = AdapterUnderTest.ErrorMessageResourceName; // Act var result = AdapterUnderTest.GetErrorMessageResourceName(attribute); // Assert Assert.True(AdapterUnderTest.WasCalledOnce()); Assert.Same(expectedAttribute, AdapterUnderTest.CallResults.First()); Assert.Equal(expectedErrorMessageResourceName, result); }
public void CreateValidationDetails_ValidatableObject_ReturnsObject() { // Arrange var provider = new DataAnnotationsMetadataProvider(); var attribute = new TestValidationAttribute(); var attributes = new Attribute[] { attribute }; var key = ModelMetadataIdentity.ForProperty(typeof(int), "Length", typeof(string)); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); // Act provider.CreateValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); Assert.Same(attribute, validatorMetadata); }
public void GetValidationDetails_Validator_AlreadyInContext_Ignores() { // Arrange var provider = new DefaultValidationMetadataProvider(); var attribute = new TestValidationAttribute(); var attributes = new Attribute[] { attribute }; var key = ModelMetadataIdentity.ForProperty(typeof(int), "Length", typeof(string)); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); context.ValidationMetadata.ValidatorMetadata.Add(attribute); // Act provider.GetValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); Assert.Same(attribute, validatorMetadata); }
public void Test_ValidationAttributes() { var nameProperty = typeof(MyFormViewModel).GetProperty(nameof(MyFormViewModel.Name)) !; Assert.IsNotNull(nameProperty.GetCustomAttribute <RequiredAttribute>()); Assert.IsNotNull(nameProperty.GetCustomAttribute <MinLengthAttribute>()); Assert.AreEqual(nameProperty.GetCustomAttribute <MinLengthAttribute>() !.Length, 1); Assert.IsNotNull(nameProperty.GetCustomAttribute <MaxLengthAttribute>()); Assert.AreEqual(nameProperty.GetCustomAttribute <MaxLengthAttribute>() !.Length, 100); var ageProperty = typeof(MyFormViewModel).GetProperty(nameof(MyFormViewModel.Age)) !; Assert.IsNotNull(ageProperty.GetCustomAttribute <RangeAttribute>()); Assert.AreEqual(ageProperty.GetCustomAttribute <RangeAttribute>() !.Minimum, 0); Assert.AreEqual(ageProperty.GetCustomAttribute <RangeAttribute>() !.Maximum, 120); var emailProperty = typeof(MyFormViewModel).GetProperty(nameof(MyFormViewModel.Email)) !; Assert.IsNotNull(emailProperty.GetCustomAttribute <EmailAddressAttribute>()); var comboProperty = typeof(MyFormViewModel).GetProperty(nameof(MyFormViewModel.IfThisWorksThenThatsGreat)) !; TestValidationAttribute testAttribute = comboProperty.GetCustomAttribute <TestValidationAttribute>() !; Assert.IsNotNull(testAttribute); Assert.IsNull(testAttribute.O); Assert.AreEqual(testAttribute.T, typeof(SampleModel)); Assert.AreEqual(testAttribute.Flag, true); Assert.AreEqual(testAttribute.D, 6.28); CollectionAssert.AreEqual(testAttribute.Names, new[] { "Bob", "Ross" }); object[]? nestedArray = (object[]?)testAttribute.NestedArray; Assert.IsNotNull(nestedArray); Assert.AreEqual(nestedArray !.Length, 3); Assert.AreEqual(nestedArray[0], 1); Assert.AreEqual(nestedArray[1], "Hello"); Assert.IsTrue(nestedArray[2] is int[]); CollectionAssert.AreEqual((int[])nestedArray[2], new[] { 2, 3, 4 }); Assert.AreEqual(testAttribute.Animal, Animal.Llama); }
public void GetValidationDetails_Validator_AlreadyInContext_Ignores() { // Arrange var provider = new DefaultValidationMetadataProvider(); var attribute = new TestValidationAttribute(); var attributes = new Attribute[] { attribute }; var key = ModelMetadataIdentity.ForProperty(typeof(string).GetProperty(nameof(string.Length)), typeof(int), typeof(string)); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(new object[0], attributes, null)); context.ValidationMetadata.ValidatorMetadata.Add(attribute); // Act provider.CreateValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); Assert.Same(attribute, validatorMetadata); }
public void GetValidationDetails_ValidatableObject_ReturnsObject() { // Arrange var provider = new DataAnnotationsMetadataProvider(); var attribute = new TestValidationAttribute(); var attributes = new Attribute[] { attribute }; var key = ModelMetadataIdentity.ForProperty(typeof(int), "Length", typeof(string)); var context = new ValidationMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); // Act provider.GetValidationMetadata(context); // Assert var validatorMetadata = Assert.Single(context.ValidationMetadata.ValidatorMetadata); Assert.Same(attribute, validatorMetadata); }