Esempio n. 1
0
        /// <summary>
        /// Performs the validation.
        /// </summary>
        /// <param name="validations">The validations.</param>
        /// <param name="validationProcess">The validation process for an item.</param>
        /// <returns>The result of the action.</returns>
        public static ActionResult PerformValidation(IReadOnlyCollection<ItemValidation> validations, Func<ItemValidation, ValidationItemResult, bool> validationProcess)
        {
            var itemResult = new ValidationItemResult();
            var result = new ValidationResult(validations) { IsValid = true };
            result.CheckedItems.Add(itemResult);

            foreach (var validation in validations)
            {
                var successful = validationProcess(validation, itemResult);
                if (!successful)
                {
                    result.IsValid = false;
                }
            }

            if (!result.IsValid)
            {
                return ActionResult.Failure(new ElementExecuteException(
                    "Value comparison(s) failed. See details for validation results.{0}{1}",
                    Environment.NewLine,
                    result.GetComparisonTableByRule()));
            }

            return ActionResult.Successful();
        }
		public void TestGetComparisonTableByRuleWhenMultipleResultsThrowsException()
		{
			var validations = new[] { ItemValidationHelper.Create("MyField", "Something") };

			var validationResult = new ValidationResult(validations);
			validationResult.CheckedItems.Add(new ValidationItemResult());
			validationResult.CheckedItems.Add(new ValidationItemResult());

			validationResult.GetComparisonTableByRule();
		}
		public void TestGetComparisonTableByRuleWithInvalidFieldValue()
		{
            var validation = ItemValidationHelper.Create("MyField", "Something");
			var validationResult = new ValidationResult(new[] { validation });

			var itemResult = new ValidationItemResult();
			itemResult.NoteValidationResult(validation, false, "Nothing");

			validationResult.CheckedItems.Add(itemResult);

			var result = validationResult.GetComparisonTableByRule();

			var expectedTable = new StringBuilder()
										.AppendLine("| Field   | Rule   | Value               |")
											.Append("| MyField | equals | Something [Nothing] |");

			Assert.AreEqual(expectedTable.ToString(), result);
		}