public async Task Should_not_add_error_if_value_is_null()
        {
            var sut = new UniqueValidator(FoundDuplicates(DomainId.NewGuid()));

            await sut.ValidateAsync(null, errors);

            Assert.Empty(errors);
        }
        public async Task Should_not_add_error_if_string_value_not_found_but_in_optimized_mode()
        {
            var sut = new UniqueValidator(Check(DomainId.NewGuid()));

            await sut.ValidateAsync(null, errors);

            Assert.Empty(errors);
        }
Example #3
0
        public async Task Should_not_add_error_if_string_value_found()
        {
            var sut = new UniqueValidator();

            var filter = string.Empty;

            await sut.ValidateAsync("hi", errors, Context(contentId, f => filter = f, ValidationMode.Default));

            Assert.Empty(errors);
        }
Example #4
0
        public async Task Should_not_add_error_if_string_value_not_found_but_in_optimized_mode()
        {
            var sut = new UniqueValidator();

            var filter = string.Empty;

            await sut.ValidateAsync("hi", errors, Context(Guid.NewGuid(), f => filter = f, ValidationMode.Optimized));

            Assert.Empty(errors);
        }
        public async Task Should_not_add_error_if_same_content_with_double_value_found()
        {
            var ctx = ValidationTestExtensions.CreateContext().Nested("property").Nested("iv");

            var sut = new UniqueValidator(FoundDuplicates(ctx.ContentId));

            await sut.ValidateAsync(12.5, ctx, ValidationTestExtensions.CreateFormatter(errors));

            Assert.Empty(errors);
        }
        public async Task Should_not_add_error_if_double_value_found_with_same_content_id()
        {
            var ctx = ValidationTestExtensions.CreateContext();

            var sut = new UniqueValidator(Check(ctx.ContentId));

            await sut.ValidateAsync(12.5, ctx, ValidationTestExtensions.CreateFormatter(errors));

            Assert.Empty(errors);
        }
Example #7
0
        public async Task Should_not_add_error_if_double_value_found()
        {
            var sut = new UniqueValidator();

            var filter = string.Empty;

            await sut.ValidateAsync(12.5, errors, Context(contentId, f => filter = f));

            Assert.Empty(errors);
        }
Example #8
0
        public void UniqueValidatorShouldReturnCorrectJSon()
        {
            //Arrange
            var validator = new UniqueValidator();
            //Act
            var created = validator.CreateValidator();
            var json    = JsonConvert.SerializeObject(created);

            //Assert
            Assert.Equal(@"{""unique"":true}", json);
        }
        public async Task Should_not_check_uniqueness_if_localized_string()
        {
            var filter = string.Empty;

            var sut = new UniqueValidator(FoundDuplicates(DomainId.NewGuid(), f => filter = f));

            await sut.ValidateAsync(12.5, errors, updater : c => c.Nested("property").Nested("de"));

            Assert.Empty(errors);

            Assert.Empty(filter);
        }
Example #10
0
        public async Task Should_add_error_if_other_content_with_string_value_found()
        {
            var filter = string.Empty;

            var sut = new UniqueValidator(FoundDuplicates(DomainId.NewGuid(), f => filter = f));

            await sut.ValidateAsync("hi", errors, updater : c => c.Nested("property").Nested("iv"));

            errors.Should().BeEquivalentTo(
                new[] { "property.iv: Another content with the same value exists." });

            Assert.Equal("Data.property.iv == 'hi'", filter);
        }
Example #11
0
        public async Task Should_add_error_if_string_value_not_found()
        {
            var sut = new UniqueValidator();

            var filter = string.Empty;

            await sut.ValidateAsync("hi", errors, Context(Guid.NewGuid(), f => filter = f));

            errors.Should().BeEquivalentTo(
                new[] { "property: Another content with the same value exists." });

            Assert.Equal("Data.property.iv == 'hi'", filter);
        }
Example #12
0
        public static IValidationResult Validate <T> (ValidationKind validationKind, T[] validationParameters, T checkedObject)
        {
            switch (validationKind)
            {
            case ValidationKind.Unique:
                object[] validationParametersObjectArray = new object[validationParameters.Length];
                validationParameters.CopyTo(validationParametersObjectArray, 0);
                UniqueValidator <T> validator = new UniqueValidator <T>(validationParametersObjectArray, checkedObject);
                return(validator.Validate( ));

            default: throw new NotImplementedException("Not implemented switch in ValidatorProvider.Validate()");
            }
        }
        public async Task Should_add_error_if_double_value_not_found()
        {
            var filter = string.Empty;

            var sut = new UniqueValidator(Check(DomainId.NewGuid(), f => filter = f));

            await sut.ValidateAsync(12.5, errors, updater : c => c.Nested("property").Nested("iv"));

            errors.Should().BeEquivalentTo(
                new[] { "property: Another content with the same value exists." });

            Assert.Equal("Data.property.iv == 12.5", filter);
        }
        public void CanValidateUsingProperties()
        {
            var fullyValidData         = TestingDataFactory.Unique.CreateUniqueData();
            var duplicatedIdData       = TestingDataFactory.Unique.CreateDuplicatedIdData();
            var duplicatedLastNameData = TestingDataFactory.Unique.CreateDuplicatedLastNameData();
            var duplicatedNamesData    = TestingDataFactory.Unique.CreateDuplicatedNamesData();

            var validatorById = new UniqueValidator <GenericParameter>(new Expression <Func <GenericParameter, object> >[]
            {
                x => x.ID
            });

            Assert.IsTrue(validatorById.Validate(fullyValidData.Collection).IsValid);
            Assert.IsTrue(validatorById.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsTrue(validatorById.Validate(duplicatedNamesData.Collection).IsValid);

            var result = validatorById.Validate(duplicatedIdData.Collection);

            Assert.IsFalse(result.IsValid);
            var equals = duplicatedIdData.IsActualDuplicatesCorrect(((UniqueValidationResult)result.First()).DuplicatedItems);

            Assert.IsTrue(equals);

            var expectedErrorMessage = "Duplicated items were found in collection";
            var actualErrorMessage   = result.First().ErrorMessage;

            Assert.AreEqual(expectedErrorMessage, actualErrorMessage);

            var validatorByNames =
                new UniqueValidator <GenericParameter>(
                    new Expression <Func <GenericParameter, object> >[] { x => x.FirstName, x => x.LastName },
                    ErrorMessageText);

            Assert.IsTrue(validatorByNames.Validate(fullyValidData.Collection).IsValid);
            Assert.IsTrue(validatorByNames.Validate(duplicatedIdData.Collection).IsValid);
            Assert.IsTrue(validatorByNames.Validate(duplicatedLastNameData.Collection).IsValid);

            result = validatorByNames.Validate(duplicatedNamesData.Collection);
            Assert.IsFalse(result.IsValid);
            equals = duplicatedNamesData.IsActualDuplicatesCorrect(
                ((UniqueValidationResult)result.First()).DuplicatedItems);
            Assert.IsTrue(equals);

            expectedErrorMessage = ErrorMessageText;
            actualErrorMessage   = result.First().ErrorMessage;
            Assert.AreEqual(expectedErrorMessage, actualErrorMessage);
        }
        public void CanValidateUsingDefaultEqualityComparer()
        {
            var validTstingData    = TestingDataFactory.Unique.CreateSimpleUniqueData();
            var invalidTestingData = TestingDataFactory.Unique.CreateSimpleNotUniqueData();

            var myStringCollectionValidator = new UniqueValidator <string>();

            var result = myStringCollectionValidator.Validate(validTstingData.Collection);

            Assert.IsTrue(result.IsValid);

            result = myStringCollectionValidator.Validate(invalidTestingData.Collection);
            Assert.IsFalse(result.IsValid);

            var equals = invalidTestingData.IsActualDuplicatesCorrect(
                ((UniqueValidationResult)result.First()).DuplicatedItems);

            Assert.IsTrue(equals);
        }
Example #16
0
        /// <summary>
        /// Показує ділогове вікно для введеня ім"я критерію чи альтернативи
        /// </summary>
        /// <param name="nameKind">Критерій/Альтернатива</param>
        /// <returns>Введене ім"я альтернативи чи критерію</returns>
        private string _showNameEditor(EntityKind nameKind)
        {
            frmNameEdit frmNameEditor = new frmNameEdit( );

            frmNameEditor.Init(nameKind);

            frmNameEditor.Validating += delegate(object sender, EventArgs <IValidationResult> e)
            {
                List <string> validationInfo = new List <string> ( );
                IEnumerable   items;
                items = nameKind == EntityKind.Alternative ? ctrlMatrix.Alternatives
                    : ctrlMatrix.Criteriums;

                foreach (object item in items)
                {
                    validationInfo.Add(item.ToString( ));
                }

                UniqueValidator <string> uniqueValidator = new UniqueValidator <string> (validationInfo.ToArray( ), frmNameEditor.Value);
                e.Value = uniqueValidator.Validate( );
            };

            return(frmNameEditor.ShowDialog( ) == DialogResult.OK ? frmNameEditor.Value : string.Empty);
        }
        public void DataValidation(BudgetProgressChangedEventHandler OnProgress, List <CurrencyEntity> entityList)
        {
            if (entityList == null || entityList.Count == 0)
            {
                return;
            }

            //List<CategoryEntity> categoryDBList = GetAllCategoryDataFromDB(OnProgress);
            //var categoryCodeDBList = from item in categoryDBList
            //          select item.CategoryCode;
            //ListRangeValidator<string> categoryCodelistRangeValidator = new ListRangeValidator<string>(categoryCodeDBList.ToList<string>(), BudgetResource.Message.Currency_CategoryCode_NoExist);

            List <CurrencyEntity> currencyDBList = GetDataFromDB(OnProgress);
            var currencyCodeDBList = from item in currencyDBList
                                     select item.CurrencyCode;
            ListRangeValidator <string> currencyCodeListRangeValidator = new ListRangeValidator <string>(currencyCodeDBList.ToList <string>(), true, BudgetResource.Message.Currency_CurrencyCode_Exists);


            var currencyCodeList = from item in entityList
                                   select item.CurrencyCode;
            UniqueValidator <string> UniqueValidator = new UniqueValidator <string>(currencyCodeList.ToList <string>(), BudgetResource.Message.Currency_CurrencyCode_Unique);

            ValidatorFactory           valFactory      = EnterpriseLibraryContainer.Current.GetInstance <ValidatorFactory>();
            Validator <CurrencyEntity> entityValidator = valFactory.CreateValidator <CurrencyEntity>();
            int           i       = 1;
            bool          noError = true;
            int           count   = entityList.Count();
            StringBuilder builder = new StringBuilder();

            foreach (CurrencyEntity entity in entityList)
            {
                ValidationResults results = entityValidator.Validate(entity);

                //ValidationResults categoryExistCheckResults = categoryCodelistRangeValidator.Validate(entity.CategoryCode);
                //results.AddAllResults(categoryExistCheckResults);

                if (!entity.ReadOnly)
                {
                    ValidationResults currencyExistCheckResults = currencyCodeListRangeValidator.Validate(entity.CurrencyCode);
                    results.AddAllResults(currencyExistCheckResults);
                }

                ValidationResults uniqueCheckResult = UniqueValidator.Validate(entity.CurrencyCode);
                results.AddAllResults(uniqueCheckResult);

                bool isValid = results.IsValid;

                noError &= isValid;

                if (!isValid)
                {
                    builder.AppendLine(
                        string.Format(
                            CultureInfo.CurrentCulture,
                            BudgetResource.Message.Common_Row_Error,
                            entity.Row));

                    foreach (ValidationResult result in results)
                    {
                        builder.AppendLine(
                            string.Format(
                                CultureInfo.CurrentCulture,
                                BudgetResource.Message.Common_Field_Error,
                                result.Message));
                    }
                }
                if (OnProgress != null)
                {
                    string InfomationMessage            = string.Format("you are validating No. {0} data", i);
                    int    Percentage                   = (int)(i * BudgetConstant.ProgressBarMaximum / count);
                    BudgetProgressChangedEventArgs args = new BudgetProgressChangedEventArgs(InfomationMessage, Percentage, null);
                    OnProgress(this, args);
                }

                i++;
            }

            if (!noError)
            {
                throw new BudgetRuntimeException("Validation Error", builder.ToString());
            }
        }
        public void DataValidation(ProjectAllocationFramework.Statues.ProgressChangedEventHandler OnProgress, List <WorkerEntity> entityList)
        {
            if (entityList == null || entityList.Count == 0)
            {
                return;
            }

            List <WorkerEntity> userDBList = GetDataFromDB(OnProgress);
            var WorkerCodeDBList           = from item in userDBList
                                             select item.WorkerCode;
            ListRangeValidator <string> WorkerCodeListRangeValidator = new ListRangeValidator <string>(WorkerCodeDBList.ToList <string>(), true, ProjectAllocationResource.Message.Worker_WorkerCode_Exists);


            var WorkerCodeList = from item in entityList
                                 select item.WorkerCode;
            UniqueValidator <string> UniqueValidator = new UniqueValidator <string>(WorkerCodeList.ToList <string>(), ProjectAllocationResource.Message.Worker_WorkerCode_Unique);

            ValidatorFactory         valFactory      = EnterpriseLibraryContainer.Current.GetInstance <ValidatorFactory>();
            Validator <WorkerEntity> entityValidator = valFactory.CreateValidator <WorkerEntity>();
            int           i       = 1;
            bool          noError = true;
            int           count   = entityList.Count();
            StringBuilder builder = new StringBuilder();

            foreach (WorkerEntity entity in entityList)
            {
                ValidationResults results = entityValidator.Validate(entity);

                if (!entity.ReadOnly)
                {
                    ValidationResults userExistCheckResults = WorkerCodeListRangeValidator.Validate(entity.WorkerCode);
                    results.AddAllResults(userExistCheckResults);
                }

                ValidationResults uniqueCheckResult = UniqueValidator.Validate(entity.WorkerCode);
                results.AddAllResults(uniqueCheckResult);

                bool isValid = results.IsValid;

                noError &= isValid;

                if (!isValid)
                {
                    builder.AppendLine(
                        string.Format(
                            CultureInfo.CurrentCulture,
                            ProjectAllocationResource.Message.Common_Row_Error,
                            entity.Row));

                    foreach (ValidationResult result in results)
                    {
                        builder.AppendLine(
                            string.Format(
                                CultureInfo.CurrentCulture,
                                ProjectAllocationResource.Message.Common_Field_Error,
                                result.Message));
                    }
                }
                if (OnProgress != null)
                {
                    string InfomationMessage = string.Format(ProjectAllocationResource.Message.Common_Master_Validate_Info, i);
                    int    Percentage        = (int)(i * Constant.ProgressBarMaximum / count);
                    ProjectAllocationFramework.Statues.ProgressChangedEventArgs args = new ProjectAllocationFramework.Statues.ProgressChangedEventArgs(InfomationMessage, Percentage, null);
                    OnProgress(this, args);
                }

                i++;
            }

            if (!noError)
            {
                throw new ProjectAllocationFramework.RuntimeException("Validation Error", builder.ToString());
            }
        }