/// <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); }