Example #1
0
        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);
        }
Example #2
0
            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);
            }
Example #3
0
            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);
            }
Example #4
0
        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);
        }
Example #6
0
        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);
        }