/// <summary> /// Validates this instance. /// </summary> /// <param name="ruleSet">The rule set.</param> /// <param name="behavior">The behavior.</param> /// <returns> /// <c>True</c> if this instance is valid; otherwise <c>false</c>. /// </returns> public virtual Boolean Validate(String ruleSet, ValidationBehavior behavior) { if (this.ValidationService.IsValidationSuspended) { return(this.ValidationService.IsValid); } var wasValid = this.IsValid; this.ValidationService.ValidateRuleSet(ruleSet); this.OnValidated(); if (behavior == ValidationBehavior.TriggerValidationErrorsOnFailure && !this.ValidationService.IsValid) { this.TriggerValidation(); } if (this.IsValid != wasValid) { this.OnPropertyChanged(() => this.IsValid); #if FX45 this.OnPropertyChanged(() => this.HasErrors); #endif } return(this.ValidationService.IsValid); }
private static void ProcessError(ValidationBehavior validationBehavior, string errorMessage, ValidationResults log) { ValidatorResources.Culture = LocalizationManager.GetCurrentCulture(); switch (validationBehavior) { case ValidationBehavior.Enforce: // throw an exception log.AddResult(new ValidationResult(true, errorMessage)); throw new InvalidPackageException(errorMessage); case ValidationBehavior.LogError: // log an error log.AddResult(new ValidationResult(true, errorMessage)); break; case ValidationBehavior.LogWarning: // log a warning log.AddResult(new ValidationResult(false, errorMessage)); break; case ValidationBehavior.None: // do nothing break; } }
public async Task Handle_Failure_Should_ReturnUnit_Detail_NoValidatorsForTheRequest() { IPipelineBehavior <TestCommand, Unit> validationPipeline = new ValidationBehavior <TestCommand, Unit>( new List <IValidator <TestCommand> >()); var testCommand = new TestCommand(); var testHandler = new TestCommandHandler(); var unit = await validationPipeline.Handle(testCommand,
/// <summary> /// Constructor. /// </summary> /// <param name="scormRequirementValidation">How to validate SCORM requirement violations.</param> /// <param name="scormRecommendationValidation">How to validate SCORM recommendation violations.</param> /// <param name="mlcRequirementValidation">How to validate MLC requirement violations.</param> /// <param name="lrmRequirementValidation">How to validate LRM requirement violations.</param> public PackageValidatorSettings(ValidationBehavior scormRequirementValidation, ValidationBehavior scormRecommendationValidation, ValidationBehavior mlcRequirementValidation, ValidationBehavior lrmRequirementValidation) { m_mlcRequirementValidation = mlcRequirementValidation; m_scormRecommendationValidation = scormRecommendationValidation; m_scormRequirementValidation = scormRequirementValidation; m_lrmRequirementValidation = lrmRequirementValidation; }
/// <summary> /// Returns true if the behavior is LogError or LogWarning. /// </summary> /// <param name="behavior"></param> /// <returns></returns> private static bool RequiresLog(ValidationBehavior behavior) { if (behavior == ValidationBehavior.LogError || behavior == ValidationBehavior.LogWarning) { return(true); } else { return(false); } }
public void element_for_member_with_no_error_renders_with_no_class() { var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Price; var textbox = new TextBox(expression.GetNameFor(), null, new List <IBehaviorMarker> { target }); var element = textbox.ToString().ShouldHaveHtmlNode("Price"); element.ShouldNotHaveAttribute(HtmlAttribute.Class); }
public async Task ShouldNotRaiseValidationException() { var validator = new List <IValidator <CreateCalendarCommand> > { new CreateCalendarCommandValidator(), }; var requestLogger = new ValidationBehavior <CreateCalendarCommand, long>(validator); await requestLogger.Handle(new CreateCalendarCommand { Title = "Test" }, new CancellationToken(), () => { return(Task.FromResult(1L)); }); }
public void element_for_member_with_error_renders_with_default_error_class() { stateDictionary.AddModelError("Price", "Something bad happened"); var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Price; var textbox = new TextBox(expression.GetNameFor(), null, new List <IBehaviorMarker> { target }); var element = textbox.ToString().ShouldHaveHtmlNode("Price"); element.ShouldHaveAttribute(HtmlAttribute.Class).WithValue("input-validation-error"); }
public void when_handling_checkbox_does_not_fall_back_to_default_behavior() { stateDictionary.AddModelError("Done", "Foo"); stateDictionary["Done"].Value = new ValueProviderResult(new[] { "false", "false" }, "false", CultureInfo.CurrentCulture); var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Done; var checkbox = new CheckBox(expression.GetNameFor(), expression.GetMemberExpression(), new List <IBehaviorMarker> { target }); var element = checkbox.ToString().ShouldHaveHtmlNode("Done"); element.ShouldHaveAttribute("value").WithValue("true"); }
/// <summary> /// Validates the given property. /// </summary> /// <param name="propertyName">Name of the property.</param> /// <param name="behavior">The behavior.</param> /// <returns> /// The first validation error, if any; Otherwise <c>null</c>. /// </returns> protected virtual String ValidateProperty(String propertyName, ValidationBehavior behavior) { String error = null; if (this.ValidationService.IsValidationSuspended) { return(error); } using (this.validationState.BeginPropertyValidation(propertyName)) { var wasValid = this.IsValid; var beforeDetectedProblems = this.ValidationService.ValidationErrors .Where(ve => ve.Key == propertyName) .SelectMany(ve => ve.DetectedProblems) .OrderBy(dp => dp) .ToArray(); error = this.ValidationService.Validate(propertyName); var afterDetectedProblems = this.ValidationService.ValidationErrors .Where(ve => ve.Key == propertyName) .SelectMany(ve => ve.DetectedProblems) .OrderBy(dp => dp) .ToArray(); var validationStatusChanged = !beforeDetectedProblems.SequenceEqual(afterDetectedProblems); if (validationStatusChanged && behavior == ValidationBehavior.TriggerValidationErrorsOnFailure) { this.OnPropertyChanged(propertyName); #if FX45 this.OnErrorsChanged(propertyName); #endif } if (this.IsValid != wasValid) { this.OnPropertyChanged(() => this.IsValid); #if FX45 this.OnPropertyChanged(() => this.HasErrors); #endif } } this.OnValidated(); return(error); }
public void element_with_error_renders_with_attempted_value() { stateDictionary.AddModelError("Price", "Something bad happened"); stateDictionary["Price"].Value = new ValueProviderResult("bad value", "bad value", CultureInfo.CurrentCulture); var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Price; var textbox = new TextBox(expression.GetNameFor(), expression.GetMemberExpression(), new List <IBehaviorMarker> { target }); var element = textbox.ToString().ShouldHaveHtmlNode("Price"); element.ShouldHaveAttribute(HtmlAttribute.Value).WithValue("bad value"); }
public void element_for_member_with_error_renders_with_specified_error_class_and_specified_other_class() { stateDictionary.AddModelError("Price", "Something bad happened"); target = new ValidationBehavior(() => stateDictionary, "my-error-class"); expression = x => x.Price; var textbox = new TextBox(expression.GetNameFor(), null, new List <IBehaviorMarker> { target }) .Class("another-class"); var element = textbox.ToString().ShouldHaveHtmlNode("Price"); element.ShouldHaveAttribute(HtmlAttribute.Class).Value .ShouldContain("another-class") .ShouldContain("my-error-class"); }
public Task DoesValidationBehaviorWorksCorrectlyWhenValidatorDoesNotPass() { var validators = new IValidator <SampleRequest>[] { new SampleValidator(), }; var behavior = new ValidationBehavior <SampleRequest, SampleResponse>(validators); var request = new SampleRequest { IsWorking = true }; Action a = () => behavior.Handle(request, CancellationToken.None, null).GetAwaiter().GetResult(); a.Should() .Throw <ValidationException>(); return(Task.CompletedTask); }
public void does_not_restore_value_for_password_field() { stateDictionary.Add("Password", new ModelState() { Value = new ValueProviderResult("foo", "foo", CultureInfo.CurrentCulture) }); var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Password; var passwordField = new Password(expression.GetNameFor(), expression.GetMemberExpression(), new List <IBehaviorMarker> { target }); var element = passwordField.ToString().ShouldHaveHtmlNode("Password"); element.ShouldHaveAttribute(HtmlAttribute.Value).WithValue(""); }
public void does_not_add_css_class_when_retrieving_value_from_modelstate_with_no_error() { stateDictionary.Add("Price", new ModelState() { Value = new ValueProviderResult("foo", "foo", CultureInfo.CurrentCulture) }); var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Price; var textbox = new TextBox(expression.GetNameFor(), null, new List <IBehaviorMarker> { target }); var element = textbox.ToString().ShouldHaveHtmlNode("Price"); element.ShouldHaveAttribute(HtmlAttribute.Value).WithValue("foo"); element.ShouldNotHaveAttribute(HtmlAttribute.Class); }
public Task DoesValidationBehaviorWorksCorrectlyWhenAllValidatorsPass() { var validators = new IValidator <SampleRequest>[] { new SampleValidator() }; var behavior = new ValidationBehavior <SampleRequest, SampleResponse>(validators); var request = new SampleRequest { Version = "v2.0", IsWorking = true }; Action a = () => behavior.Handle(request, CancellationToken.None, () => Task.FromResult(new SampleResponse { HasWorked = true })).GetAwaiter().GetResult(); a.Should().NotThrow(); return(Task.CompletedTask); }
public Task ShouldRaiseValidationException() { var validator = new List <IValidator <CreateCalendarCommand> > { new CreateCalendarCommandValidator(), }; var requestLogger = new ValidationBehavior <CreateCalendarCommand, long>(validator); Assert.CatchAsync <Application.Common.Exceptions.ValidationException>(async() => { await requestLogger.Handle(new CreateCalendarCommand { }, new CancellationToken(), () => { return(Task.FromResult(1L)); }); }); return(Task.CompletedTask); }
public void restore_checked_from_radio_set() { stateDictionary.Add("Selection", new ModelState { Value = new ValueProviderResult((int)FakeEnum.Two, "2", CultureInfo.CurrentCulture) }); var target = new ValidationBehavior(() => stateDictionary); expression = x => x.Selection; var html = new RadioSet(expression.GetNameFor(), expression.GetMemberExpression(), new List <IBehaviorMarker> { target }).Options <FakeEnum>().ToString(); var element = html.ShouldHaveHtmlNode("Selection"); var options = element.ShouldHaveChildNodesCount(8); RadioSetTests.VerifyOption("Selection", (int)FakeEnum.Zero, FakeEnum.Zero, options[0], options[1], false); RadioSetTests.VerifyOption("Selection", (int)FakeEnum.One, FakeEnum.One, options[2], options[3], false); RadioSetTests.VerifyOption("Selection", (int)FakeEnum.Two, FakeEnum.Two, options[4], options[5], true); RadioSetTests.VerifyOption("Selection", (int)FakeEnum.Three, FakeEnum.Three, options[6], options[7], false); }
public void Remove(ValidationBehavior validationBehavior) { _validationBehaviors.Remove(validationBehavior); }
public void Add(ValidationBehavior validationBehavior) { _validationBehaviors.Add(validationBehavior); }
public void SetUp() { _validator = new ValidationBehavior <Application.Websites.Queries.GetWebsites.GetWebsites, OperationResult <List <WebsiteOutputModel> > >(new GetWebsitesValidator()); }
/// <summary> /// Validates this instance. /// </summary> /// <param name="behavior">The behavior.</param> /// <returns> /// <c>True</c> if this instance is valid; otherwise <c>false</c>. /// </returns> public Boolean Validate(ValidationBehavior behavior) { return(this.Validate(null, behavior)); }
public void SetUp() { _validator = new ValidationBehavior <Application.Websites.Commands.CreateWebsite.CreateWebsite, OperationResult <WebsiteOutputModel> >(new CreateWebsiteValidator()); }
public void SetUp() { stateDictionary = new ModelStateDictionary(); expression = null; target = new ValidationBehavior(() => stateDictionary); }
public ValidationBehaviorTests() { _validator = Substitute.For <IValidator <PayLoadCreateCommand> >(); _sut = new ValidationBehavior <PayLoadCreateCommand, bool>(_validator); }
public String Test_ValidateProperty(String propertyName, ValidationBehavior behavior) { return(this.ValidateProperty(propertyName, behavior)); }
/// <summary> /// Returns an <Typ>XPathNavigator</Typ> that points to the <manifest> node of the package manifest. /// </summary> /// <exception cref="InvalidPackageException">The imsmanifest.xml file is missing from the package, or the /// <manifest> is missing from the imsmanifest.xml file.</exception> internal void CreateManifestNavigator(ValidationBehavior lrmValidation, bool fixLrmViolations, out ValidationResults log, out XPathNavigator manifest) { Stream stream; log = null; manifest = null; // Get Index.xml -- see if it's Class Server package. This is an optimization since the imsmanifest.xml // stream can be gotten directly. if (FileExists("Index.xml")) { using (stream = GetFileStream("Index.xml")) { // Allow this conversion to occur again if this method is called, but cache // the result for use by the GetFileStream("imsmanifest.xml") method. m_result = ManifestConverter.ConvertFromIndexXml(stream, GetFilePaths(), fixLrmViolations, lrmValidation); } log = m_result.Log; manifest = m_result.Manifest; } else { // If it was not a Class Server package, then see if it's a SCORM package try { stream = GetFileStream("imsmanifest.xml"); } catch (FileNotFoundException) { throw new InvalidPackageException(Resources.ImsManifestXmlMissing); } catch (DirectoryNotFoundException) { throw new InvalidPackageException(Resources.ImsManifestXmlMissing); } using (stream) { try { XPathDocument doc = new XPathDocument(stream); XPathNavigator nav = doc.CreateNavigator(); // move to the first manifest node. First try SCORM 2004 XPathExpression expr = Helper.CreateExpressionV1p3(nav, Helper.Strings.Imscp + ":" + Helper.Strings.Manifest); manifest = nav.SelectSingleNode(expr); if (manifest == null) { // Didn't find a SCORM 2004 manifest node. Try SCORM 1.2. expr = Helper.CreateExpressionV1p2(nav, Helper.Strings.Imscp + ":" + Helper.Strings.Manifest); manifest = nav.SelectSingleNode(expr); if (manifest == null) { throw new InvalidPackageException(String.Format(CultureInfo.CurrentCulture, ValidatorResources.RequiredElementMissing, Helper.Strings.Manifest, ValidatorResources.ManifestNodeMissing)); } } } catch (XmlException e) { throw new InvalidPackageException(ValidatorResources.BadXmlInManifest, e); } } } }
/// <summary> /// Determines whether the specified Object is equal to the current Object. /// </summary> /// <param name="obj"></param> /// <returns></returns> public override bool Equals(object obj) { if (obj == null) { return(false); } if (Object.ReferenceEquals(this, obj)) { return(true); } if (this.GetType() != obj.GetType()) { return(false); } var other = (VLLibraryQuestion)obj; //reference types if (!Object.Equals(ValidationField1, other.ValidationField1)) { return(false); } if (!Object.Equals(ValidationField2, other.ValidationField2)) { return(false); } if (!Object.Equals(ValidationField3, other.ValidationField3)) { return(false); } if (!Object.Equals(RegularExpression, other.RegularExpression)) { return(false); } if (!Object.Equals(QuestionText, other.QuestionText)) { return(false); } if (!Object.Equals(Description, other.Description)) { return(false); } if (!Object.Equals(HelpText, other.HelpText)) { return(false); } if (!Object.Equals(FrontLabelText, other.FrontLabelText)) { return(false); } if (!Object.Equals(AfterLabelText, other.AfterLabelText)) { return(false); } if (!Object.Equals(InsideText, other.InsideText)) { return(false); } if (!Object.Equals(RequiredMessage, other.RequiredMessage)) { return(false); } if (!Object.Equals(ValidationMessage, other.ValidationMessage)) { return(false); } if (!Object.Equals(OtherFieldLabel, other.OtherFieldLabel)) { return(false); } //value types if (!QuestionId.Equals(other.QuestionId)) { return(false); } if (!m_category.Equals(other.m_category)) { return(false); } if (!QuestionType.Equals(other.QuestionType)) { return(false); } if (!IsRequired.Equals(other.IsRequired)) { return(false); } if (!RequiredBehavior.Equals(other.RequiredBehavior)) { return(false); } if (!RequiredMinLimit.Equals(other.RequiredMinLimit)) { return(false); } if (!RequiredMaxLimit.Equals(other.RequiredMaxLimit)) { return(false); } if (!AttributeFlags.Equals(other.AttributeFlags)) { return(false); } if (!ValidationBehavior.Equals(other.ValidationBehavior)) { return(false); } if (!RandomBehavior.Equals(other.RandomBehavior)) { return(false); } if (!OtherFieldType.Equals(other.OtherFieldType)) { return(false); } if (!OtherFieldRows.Equals(other.OtherFieldRows)) { return(false); } if (!OtherFieldChars.Equals(other.OtherFieldChars)) { return(false); } if (!OptionsSequence.Equals(other.OptionsSequence)) { return(false); } if (!ColumnsSequence.Equals(other.ColumnsSequence)) { return(false); } if (!RangeStart.Equals(other.RangeStart)) { return(false); } if (!RangeEnd.Equals(other.RangeEnd)) { return(false); } return(true); }