コード例 #1
0
        public void Constructor_Valid()
        {
            // Arrange

            var message = "FooBar";
            var code    = "some-error-code";
            var level   = ValidationIssueLevel.Error;
            var names   = ImmutableHashSet.Create("Foo", "Bar");

            // Act

            var issue = new ValidationIssue(
                message: message,
                code: code,
                level: level,
                memberNames: names
                );

            // Assert

            Assert.Equal(message, issue.Message);
            Assert.Equal(code, issue.Code);
            Assert.Equal(level, issue.Level);
            Assert.Equal(names, issue.MemberNames);
        }
コード例 #2
0
 private IEnumerable <ValidationIssue> GenerateValidationIssues(int numberOfIssues)
 {
     foreach (var _ in Enumerable.Range(0, numberOfIssues))
     {
         yield return(ValidationIssue.Error(Guid.NewGuid().ToString()));
     }
 }
コード例 #3
0
        public TExecutionResult AddValidationIssue(ValidationIssue validationIssue)
        {
            if (validationIssue == null)
            {
                throw new ArgumentNullException(nameof(validationIssue));
            }

            return(this.AddValidationIssues(ImmutableHashSet.Create(validationIssue)));
        }
コード例 #4
0
        private static ImmutableHashSet <ValidationIssue> ToSet(ValidationIssue issue)
        {
            if (issue == null)
            {
                throw new ArgumentNullException(nameof(issue));
            }

            return(ImmutableHashSet.Create <ValidationIssue>(issue));
        }
コード例 #5
0
        public void Warning_WhiteSpaceMessage()
        {
            // Act

            var exception = Record.Exception(
                () => ValidationIssue.Warning(" \t")
                );

            // Assert

            Assert.IsType <ArgumentException>(exception);
        }
コード例 #6
0
        public void Warning_NullMessage()
        {
            // Act

            var exception = Record.Exception(
                () => ValidationIssue.Warning(null)
                );

            // Assert

            Assert.IsType <ArgumentNullException>(exception);
        }
コード例 #7
0
        private static String FormatIssueMessage(ValidationIssue issue)
        {
            var members     = issue.MemberNames ?? ImmutableHashSet <String> .Empty;
            var memberNames = String.Join(", ", members);
            var message     = String.Empty;

            if (!String.IsNullOrWhiteSpace(memberNames))
            {
                message += $"Member(s): {memberNames}\n";
            }

            return($"{message}{issue.Level} Message: {issue.Message}");
        }
コード例 #8
0
 public TExecutionResult AddWarning(
     String message,
     String code = default(String),
     ISet <String> memberNames = default(ImmutableHashSet <String>))
 {
     return(this.AddValidationIssue(
                ValidationIssue.Warning(
                    message: message,
                    code: code,
                    memberNames: memberNames
                    )
                ));
 }
コード例 #9
0
        public void SetCode_AllStringsAreValid(string newCode)
        {
            // Arrange

            var initial = ValidationIssue.Warning("Bar", "Code?");

            // Act

            var updated = initial.SetCode(newCode);

            // Assert

            Assert.Equal(newCode, updated.Code);
        }
コード例 #10
0
        public void SetMessage_Valid()
        {
            // Arrange

            var initial = ValidationIssue.Error("Foo");

            // Act

            var updated = initial.SetMessage("FooBar");

            // Assert

            Assert.Equal("Foo", initial.Message);
            Assert.Equal("FooBar", updated.Message);
        }
コード例 #11
0
        public static TExecutionResult AddValidationResult <TExecutionResult>(
            this OperationResultBase <TExecutionResult> operationResult,
            ValidationResult validationResult)
            where TExecutionResult : OperationResultBase <TExecutionResult>
        {
            var memberNames = validationResult.MemberNames ?? ImmutableHashSet <String> .Empty;

            var issue = new ValidationIssue(
                message: validationResult.ErrorMessage,
                level: ValidationIssueLevel.Error,
                memberNames: memberNames.ToImmutableHashSet()
                );

            return(operationResult.AddValidationIssue(issue));
        }
コード例 #12
0
        public void SetLevel_Valid()
        {
            // Arrange

            var initial = ValidationIssue.Error("Foo");

            // Act

            var updated = initial.SetLevel(ValidationIssueLevel.Warning);

            // Assert

            Assert.Equal(ValidationIssueLevel.Error, initial.Level);
            Assert.Equal(ValidationIssueLevel.Warning, updated.Level);
        }
コード例 #13
0
        public void IsSuccessful_TrueWithWarnings_NonGeneric()
        {
            // Arrange

            const string message          = "WarnFoo";
            var          validationIssues = ImmutableHashSet.Create(ValidationIssue.Warning(message));

            // Act

            var result = new OperationResult(validationIssues);

            // Assert

            Assert.True(result.IsSuccessful);
            Assert.NotEmpty(result.ValidationIssues);
        }
コード例 #14
0
        public void Constructor_NullValidationIssue()
        {
            // Arrange

            ValidationIssue issue = null;

            // Act

            var exception = Record.Exception(
                () => new ValidationIssueException(issue)
                );

            // Assert

            Assert.IsType <ArgumentNullException>(exception);
        }
コード例 #15
0
        public void Constructor_NullInnerException()
        {
            // Arrange

            var issue = ValidationIssue.Error("Foo");

            // Act

            var exception = Record.Exception(
                () => new ValidationIssueException(issue, null)
                );

            // Assert

            Assert.Null(exception);
        }
コード例 #16
0
        public void Constructor_WithInnerException()
        {
            // Arrange

            var issue          = ValidationIssue.Error("Foo");
            var innerException = new InvalidOperationException();

            // Act

            var exception = new ValidationIssueException(issue, innerException);

            // Assert

            Assert.NotNull(exception.InnerException);
            Assert.Equal(innerException, exception.InnerException);
        }
コード例 #17
0
        public void SetMessage_NullMessage()
        {
            // Arrange

            var issue = ValidationIssue.Error("FooBar");

            // Act

            var exception = Record.Exception(
                () => issue.SetMessage(null)
                );

            // Assert

            Assert.IsType <ArgumentNullException>(exception);
        }
コード例 #18
0
        public void SetMessage_WhiteSpaceMessage()
        {
            // Arrange

            var issue = ValidationIssue.Error("FooBar");

            // Act

            var exception = Record.Exception(
                () => issue.SetMessage(" \n")
                );

            // Assert

            Assert.IsType <ArgumentException>(exception);
        }
コード例 #19
0
        public void SetMemberNames_Valid()
        {
            // Arrange

            var names   = ImmutableHashSet.Create("Foo", "Bar");
            var initial = ValidationIssue.Error("Foo", memberNames: names);

            // Act

            var nextNames = names.Add("Name");
            var updated   = initial.SetMemberNames(nextNames);

            // Assert

            Assert.DoesNotContain("Name", initial.MemberNames);
            Assert.Contains("Name", updated.MemberNames);
        }
コード例 #20
0
        public void ExceptionMessage_SingleIssue_Message()
        {
            // Arrange

            var message = "Foo is beyond all reason.";
            var issues  = ImmutableHashSet.Create(
                ValidationIssue.Error(message)
                );

            // Act

            var exception = new OperationResultException(issues);

            // Assert

            Assert.Equal($"Error Message: {message}", exception.Message);
        }
コード例 #21
0
        public void Constructor_NullInnerException()
        {
            // Arrange

            var issues = ImmutableHashSet.Create(
                ValidationIssue.Error("Foo")
                );

            // Act

            var exception = Record.Exception(
                () => new OperationResultException(issues, null)
                );

            // Assert

            Assert.Null(exception);
        }
コード例 #22
0
        public void AddValidationIssue_ImmutableAndCombinesResults_Generic()
        {
            // Arrange

            var validationIssueOne = ValidationIssue.Error("Foo");
            var validationIssueTwo = ValidationIssue.Error("Bar");
            var original           = new OperationResult <Object>(ImmutableHashSet.Create(validationIssueOne));

            // Act

            var updated = original.AddValidationIssue(validationIssueTwo);

            // Assert

            Assert.NotEqual(original, updated);
            Assert.Contains(validationIssueOne, updated.ValidationIssues);
            Assert.Contains(validationIssueTwo, updated.ValidationIssues);
        }
コード例 #23
0
        public void Warning_WithJustCode()
        {
            // Arrange

            var message = "FooBar";
            var code    = "some-code";

            // Act

            var warning = ValidationIssue.Warning(message, code);

            // Assert

            Assert.Equal(message, warning.Message);
            Assert.Equal(ValidationIssueLevel.Warning, warning.Level);
            Assert.Equal(code, warning.Code);
            Assert.Null(warning.MemberNames);
        }
コード例 #24
0
        public void Warning_WithJustMemberNames()
        {
            // Arrange

            var message     = "FooBar";
            var memberNames = ImmutableHashSet.Create("foo", "bar");

            // Act

            var warning = ValidationIssue.Warning(message, memberNames);

            // Assert

            Assert.Equal(message, warning.Message);
            Assert.Equal(ValidationIssueLevel.Warning, warning.Level);
            Assert.Null(warning.Code);
            Assert.Equal(memberNames, warning.MemberNames);
        }
コード例 #25
0
        public void IsSuccessful_FalseWithResults_NonGeneric()
        {
            // Arrange

            const string message          = "Foo";
            var          validationIssues = ImmutableHashSet.Create(ValidationIssue.Error(message));

            // Act

            var result = new OperationResult(validationIssues);

            // Assert

            Assert.False(result.IsSuccessful);
            var validationResult = Assert.Single(result.ValidationIssues);

            Assert.Equal(message, validationResult.Message);
        }
コード例 #26
0
        public void Constructor_Valid()
        {
            // Arrange

            var issue = ValidationIssue.Error("Foo");

            // Act

            var exception = new ValidationIssueException(issue);

            // Assert

            Assert.Null(exception.InnerException);
            Assert.NotNull(exception.OperationResult);
            Assert.NotNull(exception.OperationResult.ValidationIssues);
            var actualIssue = Assert.Single(exception.OperationResult.ValidationIssues);

            Assert.Equal(issue, actualIssue);
        }
コード例 #27
0
        public void ExceptionMessage_SingleIssue_Message_WithMembers()
        {
            // Arrange

            var message = "Foo is beyond all reason.";
            var names   = ImmutableHashSet.Create("Foo", "Bar");
            var issues  = ImmutableHashSet.Create(
                ValidationIssue.Error(message, memberNames: names)
                );

            // Act

            var exception = new OperationResultException(issues);

            // Assert

            var memberNames = String.Join(", ", names);

            Assert.Equal($"Member(s): {memberNames}\nError Message: {message}", exception.Message);
        }
コード例 #28
0
        public void Constructor_InnerException()
        {
            // Arrange

            var issues = ImmutableHashSet.Create(
                ValidationIssue.Error("Foo")
                );
            var innerException = new InvalidOperationException();

            // Act

            var exception = new OperationResultException(
                issues,
                innerException
                );

            // Assert

            Assert.Equal(issues, exception.OperationResult.ValidationIssues);
            Assert.Equal(innerException, exception.InnerException);
        }
コード例 #29
0
        public void ExceptionMessage_MultipleIssues_Message()
        {
            // Arrange

            var message        = "Foo is beyond all reason.";
            var warningMessage = "What is Kung Fu Fighting?";
            var names          = ImmutableHashSet.Create("Foo", "Bar");
            var issues         = ImmutableHashSet.Create(
                ValidationIssue.Error(message, memberNames: names),
                ValidationIssue.Warning(warningMessage)
                );

            // Act

            var exception = new OperationResultException(issues);

            // Assert

            var memberNames = String.Join(", ", names);

            Assert.Contains($"Member(s): {memberNames}\nError Message: {message}", exception.Message);
            Assert.Contains($"Warning Message: {warningMessage}", exception.Message);
        }
コード例 #30
0
        public void AddError_VaryingSets_Generic(
            int initialNumberOfValidationIssues)
        {
            // Arrange

            var initialValidationIssues =
                this.GenerateValidationIssues(initialNumberOfValidationIssues)
                .ToImmutableHashSet();

            var message = "FooBar";
            var initial = new OperationResult <Object>(initialValidationIssues);

            // Act

            var updated = initial.AddError(message);

            // Assert

            var issue = ValidationIssue.Error(message);

            Assert.Contains(issue, updated.ValidationIssues);
            Assert.DoesNotContain(issue, initial.ValidationIssues);
        }