public void CreateValidators_DoesNotGetsNumericValidator_ForUnsupportedTypes(Type modelType)
    {
        // Arrange
        var provider = new NumericClientModelValidatorProvider();
        var metadata = _metadataProvider.GetMetadataForType(modelType);

        var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));

        // Act
        provider.CreateValidators(providerContext);

        // Assert
        Assert.Empty(providerContext.Results);
    }
        public void CreateValidators_DoesNotGetsNumericValidator_ForUnsupportedTypes(Type modelType)
        {
            // Arrange
            var provider = new NumericClientModelValidatorProvider();
            var metadata = _metadataProvider.GetMetadataForType(modelType);

            var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));

            // Act
            provider.CreateValidators(providerContext);

            // Assert
            Assert.Empty(providerContext.Results);
        }
        public void CreateValidators_GetsNumericValidator_ForNumericType(Type modelType)
        {
            // Arrange
            var provider = new NumericClientModelValidatorProvider();
            var metadata = _metadataProvider.GetMetadataForType(modelType);

            var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));

            // Act
            provider.CreateValidators(providerContext);

            // Assert
            var validatorItem = Assert.Single(providerContext.Results);
            Assert.IsType<NumericClientModelValidator>(validatorItem.Validator);
        }
    public void CreateValidators_GetsNumericValidator_ForNumericType(Type modelType)
    {
        // Arrange
        var provider = new NumericClientModelValidatorProvider();
        var metadata = _metadataProvider.GetMetadataForType(modelType);

        var providerContext = new ClientValidatorProviderContext(metadata, GetValidatorItems(metadata));

        // Act
        provider.CreateValidators(providerContext);

        // Assert
        var validatorItem = Assert.Single(providerContext.Results);

        Assert.IsType <NumericClientModelValidator>(validatorItem.Validator);
    }
        public void CreateValidators_DoesNotAddDuplicateValidators()
        {
            // Arrange
            var provider = new NumericClientModelValidatorProvider();
            var metadata = _metadataProvider.GetMetadataForType(typeof(float));
            var items = GetValidatorItems(metadata);
            var expectedValidatorItem = new ClientValidatorItem
            {
                Validator = new NumericClientModelValidator(),
                IsReusable = true
            };
            items.Add(expectedValidatorItem);

            var providerContext = new ClientValidatorProviderContext(metadata, items);

            // Act
            provider.CreateValidators(providerContext);

            // Assert
            var validatorItem = Assert.Single(providerContext.Results);
            Assert.Same(expectedValidatorItem.Validator, validatorItem.Validator);
        }
    public void CreateValidators_DoesNotAddDuplicateValidators()
    {
        // Arrange
        var provider = new NumericClientModelValidatorProvider();
        var metadata = _metadataProvider.GetMetadataForType(typeof(float));
        var items    = GetValidatorItems(metadata);
        var expectedValidatorItem = new ClientValidatorItem
        {
            Validator  = new NumericClientModelValidator(),
            IsReusable = true
        };

        items.Add(expectedValidatorItem);

        var providerContext = new ClientValidatorProviderContext(metadata, items);

        // Act
        provider.CreateValidators(providerContext);

        // Assert
        var validatorItem = Assert.Single(providerContext.Results);

        Assert.Same(expectedValidatorItem.Validator, validatorItem.Validator);
    }