public void RepeaterHideRuleReferenceRootControl() { ITruthCondition condition = new HideTruthCondition { RuleType = "HIDE" }; TruthConditionList subRuleList = new TruthConditionList(); CompareDefinition compareDefinition = new CompareDefinition { CompareTo = ComparisonType.Value, Field = "Checkbox", FieldScope = FieldScope.Unknown, Operator = Operator.Equals, Value = "checked" }; subRuleList.Add(new CompareTruthCondition { RuleType = "EVAL", Value = compareDefinition }); condition.Value = subRuleList; ControlList controlList = new ControlList { new CheckboxControl { Name = "Checkbox" } }; RepeaterControl repeater = new RepeaterControl { Name = "Parent" }; repeater.AddChild(new ComboControl { Name = "Child", VisibilityRule = condition }); controlList.Add(repeater); ApplicationData applicationData = new ApplicationData { { "Checkbox", "checked" } }; Dictionary<string, object>[] repeaterValue = new Dictionary<string, object>[1]; repeaterValue[0] = new Dictionary<string, object>(); repeaterValue[0]["Child"] = string.Empty; applicationData.Add("Parent", repeaterValue); ITruthConditionEvaluator<ITruthCondition> evaluator = this.EvaluatorRegister.GetEvaluatorFor<HideTruthCondition>(); bool result = evaluator.Evaluate(condition, controlList, applicationData, null, this.EvaluatorRegister, "Parent[0]"); Assert.IsTrue(result); applicationData["Checkbox"] = string.Empty; result = evaluator.Evaluate(condition, controlList, applicationData, null, this.EvaluatorRegister, "Parent[0]"); Assert.IsFalse(result); }
public void SerializeCompareValueString() { IfTruthCondition rootCondition = new IfTruthCondition(); TruthConditionList conditionList = new TruthConditionList(); CompareTruthCondition compareCondition = new CompareTruthCondition(); conditionList.Add(compareCondition); rootCondition.Value = conditionList; CompareDefinition compareDefinition = new CompareDefinition(); compareCondition.Value = compareDefinition; compareDefinition.Value = "test"; string serialized = JsonConvert.SerializeObject(rootCondition); Assert.IsTrue(serialized.Contains("\"Value\":\"test\"")); }
public void SerializeCompareValueArray() { IfTruthCondition rootCondition = new IfTruthCondition(); TruthConditionList conditionList = new TruthConditionList(); CompareTruthCondition compareCondition = new CompareTruthCondition(); conditionList.Add(compareCondition); rootCondition.Value = conditionList; CompareDefinition compareDefinition = new CompareDefinition(); compareCondition.Value = compareDefinition; compareDefinition.Value = new[] { "test1", "test2" }; string serialized = JsonConvert.SerializeObject(rootCondition); Assert.IsTrue(serialized.Contains("\"Value\":[\"test1\",\"test2\"]")); }
public void TestInitialize() { ControlList list = new ControlList { new TextControl { Id = 1, Name = "textbox1" }, new TextControl { Id = 2, Name = "textbox2" } }; TruthConditionList hideRuleValue = new TruthConditionList { new CompareTruthCondition { Value = new CompareDefinition { CompareTo = ComparisonType.Value, Field = "textbox1", Operator = Operator.Equals, Value = string.Empty } } }; list[1].VisibilityRule = new HideTruthCondition { Value = hideRuleValue }; TruthConditionList pageValidators = new TruthConditionList(); TruthConditionList pageValidatorValue = new TruthConditionList { new CompareTruthCondition { Value = new CompareDefinition { CompareTo = ComparisonType.Value, Field = "textbox2", Operator = Operator.Equals, Value = string.Empty } } }; pageValidators.Add(new ValidateTruthCondition { Error = new ValidationError { Message = "test", Position = "2" }, Value = pageValidatorValue }); this.validator = new ApplicationValidator(list, pageRules: pageValidators, validatorList: this.validatorList); }
/// <summary> /// Creates a <see cref="Microsoft.Practices.EnterpriseLibrary.Validation.Validator"/> that will /// validate <paramref name="pageRules"/>. /// </summary> /// <param name="pageRules">The list of page rules to create a validator for.</param> /// <param name="evaluatorFactory">A <see cref="TruthConditionEvaluatorFactory "/>.</param> /// <returns> /// A <see cref="Microsoft.Practices.EnterpriseLibrary.Validation.Validator"/> that will /// validate <paramref name="pageRules"/>. /// </returns> public Validator CreatePageValidator(TruthConditionList pageRules, TruthConditionEvaluatorFactory evaluatorFactory) { List<Validator> validatorsList = pageRules.OfType<ValidateTruthCondition>().Select(validationRule => new ITruthConditionValidator(validationRule, this.allControls, evaluatorFactory)).Cast<Validator>().ToList(); return new EntLib.AndCompositeValidator(validatorsList.ToArray()); }
/// <summary> /// Validates an application. /// </summary> /// <param name="application">The application to validate.</param> /// <param name="pagesToValidate">The pagesToValidate to validate.</param> /// <param name="controls">A list of all controls.</param> /// <param name="controlsAccess">The control access list for the current user.</param> /// <param name="subpageControlId">The id of the control acting as the current subpage. If <see langword="null" />, then all controls are validated.</param> /// <param name="product">The product object.</param> /// <returns> /// The <see cref="ValidationResults" />. /// </returns> private ValidationResults ValidateApplication(Application application, PageList pagesToValidate, ControlList controls, List<ControlAccess> controlsAccess, int? subpageControlId = null, ProductDefinition product = null) { List<ControlWithOptions> controlsWithOptions = controls.FindAllRecursive<ControlWithOptions>(); if (controlsWithOptions.Any()) { this.RegisterOptionControls(application.FormOrganisationId, true, controlsWithOptions, application.ApplicationData); } var controlList = pagesToValidate.AllControls; var ruleList = pagesToValidate.AllRules; if (subpageControlId != null) { var subpageControl = controlList.FindRecursive<GroupControl>(x => x.Id == subpageControlId); if (subpageControl != null) { controlList = new ControlList { subpageControl }; TruthConditionList validRules = new TruthConditionList(); validRules.AddRange(ruleList.Where(rule => controlList.FindRecursive(x => x.Id.ToString().Equals(((ValidateTruthCondition)rule).Error.Position)) != null)); ruleList = validRules; } } ServiceEndpointList endpointList = pagesToValidate.AllExternalRuleHandlers.Count > 0 ? this.DataAccess.GetServiceEndpointList() : new ServiceEndpointList(); RegexValidatorList regexValidators = this.DataAccess.GetValidatorList(); if (product != null) { this.FillControlReferences(pagesToValidate, product.FormDefinition.Pages.AllControls); foreach (var referencedControls in pagesToValidate.Select(p => p.ReferencedControls)) { foreach (var control in referencedControls) { var exists = controls.FindRecursive(control.Name) != null; if (exists) { continue; } controls.AddRange(referencedControls); } } } ApplicationValidator validator = new ApplicationValidator(controls, controlList, controlsAccess, ruleList, pagesToValidate.AllExternalRuleHandlers, endpointList, this.endpointCommunicator, regexValidators); return validator.Validate(application); }