Example #1
0
        public void can_create_a_validation_pass_and_read_it_back()
        {
            var result = ValidationOutcome <string> .Pass(); // note, we can't infer the type of a pass

            Assert.IsFalse(result.HasError);
            Assert.IsTrue(result.IsValid);
        }
Example #2
0
        public void can_implicitly_cast_a_success_result_to_its_contained_type()
        {
            var    result = ValidationOutcome.Fail("value");
            string value  = result;

            Assert.AreEqual("value", value);
        }
        /// <summary>
        /// Finalizes the validation, clears task score data
        /// </summary>
        public void FinalizeValidation()
        {
            TableExtractionTaskReporting reporting = new TableExtractionTaskReporting();

            foreach (var pair in Results)
            {
                if (pair.Value.Outcome == ValidationOutcome.undefined)
                {
                    ValidationOutcome result = pair.Value.Compute();
                    pair.Value.ReportTable_Training = reporting.GetTaskExecutionScoreReport(pair.Key);
                }

                //pair.Key.PropertyDictionary.CollectProperties(pair.Value.PropertyValidation.GetResults()[ValidationOutcome.Validated]);
                // pair.Key.score = new TableExtractionTaskScore();
            }


            ResultsByOutcome = new aceEnumListSet <ValidationOutcome, TaskValidationResult>();
            foreach (var pair in Results)
            {
                ResultsByOutcome[pair.Value.Outcome].Add(pair.Value);


                //pair.Key.PropertyDictionary.CollectProperties(pair.Value.PropertyValidation.GetResults()[ValidationOutcome.Validated]);
                // pair.Key.score = new TableExtractionTaskScore();
            }
        }
Example #4
0
        private static ValidationOutcome CreateOutcome(
            IEnumerable <ValidationResult> results)
        {
            var outcome = new ValidationOutcome();

            foreach (var result in results)
            {
                var compositeResult = result as CompositeResult;
                if (compositeResult == null)
                {
                    var error = result.ErrorMessage;
                    foreach (var memberName in result.MemberNames)
                    {
                        outcome.AddError(memberName, error);
                    }
                }
                else
                {
                    foreach (var memberName in result.MemberNames)
                    {
                        outcome.AddError(memberName, compositeResult.Outcome);
                    }
                }
            }
            return(outcome);
        }
Example #5
0
        public void WebHookUri_Validates(Uri uri, ValidationOutcome expected)
        {
            // Arrange
            WebHook webHook = new WebHook { WebHookUri = uri };
            var validationResults = new List<ValidationResult>();
            var context = new ValidationContext(webHook) { MemberName = "WebHookUri" };

            // Act
            bool actual = Validator.TryValidateProperty(webHook.WebHookUri, context, validationResults);

            // Assert
            switch (expected)
            {
                case ValidationOutcome.Valid:
                    Assert.True(actual);
                    break;

                case ValidationOutcome.Required:
                    Assert.False(actual);
                    Assert.Equal("The WebHookUri field is required.", validationResults.Single().ErrorMessage);
                    Assert.Equal("WebHookUri", validationResults.Single().MemberNames.Single());
                    break;

                default:
                    Assert.True(false);
                    break;
            }
        }
Example #6
0
        public void WebHookUri_Validates(Uri uri, ValidationOutcome expected)
        {
            // Arrange
            WebHook webHook = new WebHook {
                WebHookUri = uri
            };
            var validationResults = new List <ValidationResult>();
            var context           = new ValidationContext(webHook)
            {
                MemberName = "WebHookUri"
            };

            // Act
            bool actual = Validator.TryValidateProperty(webHook.WebHookUri, context, validationResults);

            // Assert
            switch (expected)
            {
            case ValidationOutcome.Valid:
                Assert.True(actual);
                break;

            case ValidationOutcome.Required:
                Assert.False(actual);
                Assert.Equal("The WebHookUri field is required.", validationResults.Single().ErrorMessage);
                Assert.Equal("WebHookUri", validationResults.Single().MemberNames.Single());
                break;

            default:
                Assert.True(false);
                break;
            }
        }
Example #7
0
 public void CreateTeamIntegritey(CreateTeam request, ValidationOutcome outcome)
 {
     if (request.Team == null)
     {
         outcome.AddError("Team", "Something really bad");
     }
 }
Example #8
0
        public void Secret_Validates(string secret, ValidationOutcome expected)
        {
            // Arrange
            WebHook webHook = new WebHook {
                Secret = secret
            };
            var validationResults = new List <ValidationResult>();
            var context           = new ValidationContext(webHook)
            {
                MemberName = "Secret"
            };

            // Act
            bool actual = Validator.TryValidateProperty(webHook.Secret, context, validationResults);

            // Assert
            switch (expected)
            {
            case ValidationOutcome.Valid:
                Assert.True(actual);
                break;

            case ValidationOutcome.Required:
                Assert.False(actual);
                Assert.Equal("The Secret field is required.", validationResults.Single().ErrorMessage);
                Assert.Equal("Secret", validationResults.Single().MemberNames.Single());
                break;

            case ValidationOutcome.Invalid:
                Assert.Equal("The WebHook secret key parameter must be between 32 and 64 characters long.", validationResults.Single().ErrorMessage);
                Assert.Equal("Secret", validationResults.Single().MemberNames.Single());
                break;
            }
        }
Example #9
0
            public async Task ShouldHaveName(Team player, ValidationOutcome outcome)
            {
                await Task.Delay(10);

                if (string.IsNullOrEmpty(player.Name))
                {
                    outcome.AddError("Name", "Name is required");
                }
            }
Example #10
0
        public void can_treat_a_result_as_boolean_to_read_success_status()
        {
            var good = ValidationOutcome <int> .Pass();

            var bad = ValidationOutcome.Fail("reason");

            Assert.IsTrue(good);
            Assert.IsFalse(bad);
        }
Example #11
0
 private static void AddErrors(ValidationResult result, ValidationOutcome outcome)
 {
     foreach (var error in result.Errors)
     {
         var child   = error as OutcomeFailure;
         var failure = child?.FailedOutcome ?? (object)error.ErrorMessage;
         outcome.AddError(error.PropertyName, failure);
     }
 }
Example #12
0
        public static void ThrowOnInvalid <TValue>(Func <TValue, ValidationOutcome> validator, TValue value)
        {
            ValidationOutcome vo = validator(value);

            if (vo != null)
            {
                throw new ValidationException(vo.Message);
            }
        }
        public void Should_Notify_Nested_Error_Changes()
        {
            string propertyName = null;
            var    outcome      = new ValidationOutcome();

            outcome.ErrorsChanged += (s, e) => propertyName = e.PropertyName;
            outcome.AddError("Company.Name", "Name can't be empty");
            Assert.AreEqual("Company.Name", propertyName);
        }
        public ValidationResultViewModel BuildResult(ValidationOutcome outcome, string reportingYear = "", string reportName = "", string datasetName = "")
        {
            var result = new ValidationResultViewModel();

            result.Quality = OutcomeQuality(outcome);

            result.HelpTopic = outcome.GetDescription();
            if (string.IsNullOrEmpty(result.HelpTopic))
            {
                result.HelpTopic = "DEPENDENCY CHECK";
                result.HelpText  = "Click here for more information";
            }
            else if (result.HelpTopic.ContainsIgnoreCase("Warning") || result.HelpTopic.ContainsIgnoreCase("Error"))
            {
                result.HelpTopic = result.HelpTopic.Replace("Warning ", null).Replace("Error ", null);
                result.HelpText  = "Click here for more information";
            }

            if (result.Quality == ValidationLevel.Success)
            {
                return(result);
            }

            var temp = OutcomeMesssage(outcome);

            switch (outcome)
            {
            case ValidationOutcome.StaleBaseData:
                temp = string.Format(temp, SourceViewModel.Website.ReportedYear, reportingYear, reportName);
                break;

            case ValidationOutcome.CostToChargeUndefined:
            case ValidationOutcome.RealtimePhysicianDataCannotHaveSubReports:
                temp = string.Format(temp, reportName);
                break;

            case ValidationOutcome.CmsProviderIdUnmapped:
            case ValidationOutcome.HospitalProfileMissingLocalHospIdOrProviderId:
            case ValidationOutcome.CostQualityAllFamilySelected:
                temp = string.Format(temp, reportName);
                break;

            //case ValidationOutcome.HospitalProfileMissingMedicareDataset:
            //case ValidationOutcome.HospitalProfileMissingIPDataset:
            case ValidationOutcome.NoMeasuresForTheDataSet:
            case ValidationOutcome.QIUnMappedHospitalLocalId:
            case ValidationOutcome.UnMappedHospitalLocalId:
            case ValidationOutcome.UnMappedHospitalProfileLocalId:
                temp = string.Format(temp, datasetName);
                break;
            }
            result.Message = temp;

            result.CompositionArea = OutcomeArea(outcome);
            return(result);
        }
Example #15
0
        public void can_create_a_validation_failure_and_read_it_back()
        {
            var error_msg = "Hello, world";

            var result = ValidationOutcome.Fail(error_msg); // can use the `ValidationOutcome` rather than `ValidationOutcome<T>` class to infer type of failures

            Assert.IsTrue(result.HasError);
            Assert.IsFalse(result.IsValid);
            Assert.AreEqual(error_msg, result.ValidationErrors);
        }
        public void Should_Add_Simple_Error()
        {
            var outcome = new ValidationOutcome();

            outcome.AddError("Name", "Name can't be empty");
            Assert.AreEqual("Name can't be empty", outcome["Name"]);
            Assert.AreEqual("Name can't be empty", outcome.Error);
            CollectionAssert.AreEqual(new[] { "Name" }, outcome.Culprits);
            CollectionAssert.Contains(
                outcome.GetErrors("Name").Cast <object>().ToArray(),
                "Name can't be empty"
                );
        }
Example #17
0
 public Promise ShouldHaveLicensesCoach(Team team, ValidationOutcome outcome)
 {
     return(Promise.Delay(TimeSpan.FromMilliseconds(10)).Then((d, s) =>
     {
         var coach = team.Coach;
         if (coach == null)
         {
             outcome.AddError("Coach", "Coach is required");
         }
         else if (string.IsNullOrEmpty(coach.License))
         {
             outcome.AddError("Coach.License", "Licensed Coach is required");
         }
     }));
 }
Example #18
0
        private static ValidationResult CreateResult(
            ValidationOutcome outcome, ValidationContext context)
        {
            var validationAware = context.InstanceToValidate as IValidationAware;

            if (validationAware != null)
            {
                validationAware.ValidationOutcome = outcome;
            }
            return(outcome.IsValid ? new ValidationResult()
                 : new ValidationResult(new[]
            {
                new OutcomeFailure(context.PropertyChain.ToString(), outcome)
            }));
        }
    private void OnValidationCoroutineComplete(ValidationOutcome outcome)
    {
        switch (outcome.code)
        {
        case ValidationOutcome.Code.Success:
            ValidStart?.Invoke();
            break;

        default:
            InvalidStart?.Invoke(outcome);
            break;
        }

        onChainValidation.StopCoroutine(validationCR);
        validationCR = null;
    }
Example #20
0
        public void trying_to_implicitly_cast_a_passed_result_throws_an_exception()
        {
            var result = ValidationOutcome <int> .Pass();

            try
            {
                int value = result;
                Console.WriteLine(value);
            }
            catch (InvalidOperationException actual)
            {
                Assert.AreEqual("Tried to read errors of a successful validation", actual.Message);
                return;
            }

            Assert.Fail("Did not throw exception");
        }
Example #21
0
            public void ShouldHaveFullName(Player player, ValidationOutcome outcome)
            {
                if (string.IsNullOrEmpty(player.FirstName))
                {
                    outcome.AddError("FirstName", "First name is required");
                }

                if (string.IsNullOrEmpty(player.LastName))
                {
                    outcome.AddError("LastName", "Last name is required");
                }

                if (!player.DOB.HasValue)
                {
                    outcome.AddError("DOB", "DOB is required");
                }
            }
Example #22
0
        private static TestOutcome ToTestOutcome(ValidationOutcome outcome)
        {
            if ((outcome & ValidationOutcome.Error) > 0)
            {
                return(TestOutcome.Failed);
            }
            if ((outcome & ValidationOutcome.Skipped) > 0)
            {
                return(TestOutcome.Skipped);
            }
            if ((outcome & ValidationOutcome.Passed) > 0)
            {
                return(TestOutcome.Passed);
            }

            return(TestOutcome.Inconclusive);
        }
        public void Should_Add_Nested_Error()
        {
            var outcome = new ValidationOutcome();

            outcome.AddError("Company.Name", "Name can't be empty");
            Assert.AreEqual($"[{Environment.NewLine}Name can't be empty{Environment.NewLine}]",
                            outcome["Company"]);
            CollectionAssert.AreEqual(new[] { "Company" }, outcome.Culprits);
            var company = outcome.GetOutcome("Company");

            Assert.IsFalse(company.IsValid);
            Assert.AreEqual("Name can't be empty", company["Name"]);
            CollectionAssert.AreEqual(new[] { "Name" }, company.Culprits);
            CollectionAssert.Contains(
                outcome.GetErrors("Company").Cast <object>().ToArray(),
                company);
        }
Example #24
0
 private static void CollectErrors(ValidationOutcome outcome, ICollection <string> errors)
 {
     foreach (var culprit in outcome.Culprits)
     {
         foreach (var error in outcome.GetErrors(culprit))
         {
             if (error is ValidationOutcome child)
             {
                 CollectErrors(child, errors);
             }
             else
             {
                 errors.Add(error.ToString());
             }
         }
     }
 }
Example #25
0
        //expected maximum entry --name "name" --count "12" --help
        public static ValidationOutcome Go(string[] args)
        {
            string[]                 pristineArgs = args.ToArray();
            ValidationOutcome        resultantValidationOutcome = ValidationOutcome.OK;
            List <ValidationOutcome> outcomes = new List <ValidationOutcome>();

            if (args != null && args.Any())
            {
                string currentArg;

                // list of argument indices which have been used by known parameters
                List <int> argumentUsedIndices = new List <int>();
                for (int argIndex = 0; argIndex < args.Length; argIndex++)
                {
                    if (!argumentUsedIndices.Contains(argIndex)) // this argument has already been used by a parameter
                    {
                        currentArg = args[argIndex];
                        if (MatchesKnownParameter(currentArg))
                        {
                            IConsoleParameter matchingParameter = GetMatchingParameter(currentArg);
                            if (matchingParameter.SyntaxOfParameterValid(args))
                            {
                                // Run parameter's validation
                                outcomes.Add(matchingParameter.Validate(args));
                                argumentUsedIndices.AddRange(matchingParameter.IndicesOfUsedArgs(args));

                                //Remove parameter from known set
                                KnownConsoleParameters.All.Remove(matchingParameter);
                            }
                            else // syntax of parameter doesn't match, therefore invalid
                            {
                                outcomes.Add(ValidationOutcome.Invalid);
                            }
                        }
                        else // parameter not recognized, declare it invalid
                        {
                            outcomes.Add(ValidationOutcome.Invalid);
                        }
                    }
                    resultantValidationOutcome = DetermineValidationOutcome(outcomes);
                }
            }

            return(resultantValidationOutcome);
        }
Example #26
0
        public static ConsoleColor ConsoleColor(this ValidationOutcome outcome)
        {
            if ((outcome & ValidationOutcome.Error) > 0)
            {
                return(FancyConsole.ConsoleErrorColor);
            }
            if ((outcome & ValidationOutcome.Warning) > 0)
            {
                return(FancyConsole.ConsoleWarningColor);
            }
            if ((outcome & ValidationOutcome.Passed) > 0)
            {
                return(FancyConsole.ConsoleSuccessColor);
            }
            if ((outcome & ValidationOutcome.Skipped) > 0)
            {
                return(FancyConsole.ConsoleWarningColor);
            }

            return(FancyConsole.ConsoleDefaultColor);
        }
        private HttpResponseMessage CreateInvalidRequestResponse()
        {
            var outcome = new ValidationOutcome();

            foreach (var property in ModelState)
            {
                foreach (var error in property.Value.Errors)
                {
                    var key = property.Key;
                    if (key.StartsWith("message."))
                    {
                        key = key.Substring(8);
                    }
                    outcome.AddError(key,
                                     error.Exception?.Message ?? error.ErrorMessage);
                }
            }
            return(CreateErrorResponse(
                       new ValidationException(outcome),
                       HttpStatusCode.BadRequest));
        }
        private IActionResult CreateInvalidResult(JsonSerializerSettings settings)
        {
            var outcome = new ValidationOutcome();

            foreach (var property in ModelState)
            {
                foreach (var error in property.Value.Errors)
                {
                    var key = property.Key;
                    if (key.StartsWith("message."))
                    {
                        key = key.Substring(8);
                    }
                    var message = error.Exception?.Message ?? error.ErrorMessage;
                    outcome.AddError(key, message);
                }
            }

            return(CreateErrorResult(
                       new ValidationException(outcome), settings,
                       StatusCodes.Status400BadRequest));
        }
            public void AddResults(ValidationError[] errors, ValidationOutcome? outcome = null)
            {
                if (errors.Length == 0)
                    return;

                this.Errors.AddRange(errors);
                if (outcome.HasValue)
                    this.Outcome = outcome.Value;
            }
 public void SetOutcome(string actionName, ValidationOutcome outcome)
 {
     ActionFromName(actionName).Outcome = outcome;
 }
 public void AddResults(string actionName, ValidationError[] errors, ValidationOutcome? outcome = null)
 {
     this[actionName].AddResults(errors, outcome);
 }
 public void AddResult(string actionName, ValidationError error, ValidationOutcome? outcome = null )
 {
     this[actionName].AddResults(new ValidationError[] { error }, outcome);
 }
Example #33
0
        private static TestOutcome ToTestOutcome(ValidationOutcome outcome)
        {
            if ((outcome & ValidationOutcome.Error) > 0)
                return TestOutcome.Failed;
            if ((outcome & ValidationOutcome.Skipped) > 0)
                return TestOutcome.Skipped;
            if ((outcome & ValidationOutcome.Passed) > 0)
                return TestOutcome.Passed;

            return TestOutcome.Inconclusive;
        }
Example #34
0
 public void SetOutcome(string actionName, ValidationOutcome outcome)
 {
     ActionFromName(actionName).Outcome = outcome;
 }
 public void TryToPayUserValidator(IList <UserContentValidation> userValidations, ValidationOutcome outcome, long contentId, long subDirectoryId,
                                   long adminId, double amountToSend)
 {
     //Pay the people
     foreach (var validator in userValidations)
     {
         if (validator.ShouldBePersisted && outcome == ValidationOutcome.Keep ||
             !validator.ShouldBePersisted && outcome == ValidationOutcome.Remove)
         {
             _transactionService.AddMoCreditsTransaction(validator.UserId, adminId,
                                                         amountToSend, TransferType.LinkedContentValidation, contentId);
             _notificationService.NotifyAllUserValidators($"You got paid {amountToSend}mo for your participation in a validation. Well done, you were part of the concensus",
                                                          new List <long>()
             {
                 validator.UserId
             }, contentId, subDirectoryId);
         }
         else
         {
             _notificationService.NotifyAllUserValidators($"Unfortunatly you were not part of the concensus for a user validation you participated in. Better luck next time",
                                                          new List <long>()
             {
                 validator.UserId
             }, contentId, subDirectoryId);
         }
     }
 }
 public virtual ValidationOutcome SetOutcome(ValidationOutcome outcome, String message)
 {
     Message = message;
     Outcome = outcome;
     return(outcome);
 }