コード例 #1
0
 private IEnumerable <ValidationIssue> GenerateValidationIssues(int numberOfIssues)
 {
     foreach (var _ in Enumerable.Range(0, numberOfIssues))
     {
         yield return(ValidationIssue.Error(Guid.NewGuid().ToString()));
     }
 }
コード例 #2
0
        public void Error_NullMessage()
        {
            // Act

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

            // Assert

            Assert.IsType <ArgumentNullException>(exception);
        }
コード例 #3
0
        public void Error_WhiteSpaceMessage()
        {
            // Act

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

            // Assert

            Assert.IsType <ArgumentException>(exception);
        }
コード例 #4
0
 public TExecutionResult AddError(
     String message,
     String code = default(String),
     ISet <String> memberNames = default(ImmutableHashSet <String>))
 {
     return(this.AddValidationIssue(
                ValidationIssue.Error(
                    message: message,
                    code: code,
                    memberNames: memberNames
                    )
                ));
 }
コード例 #5
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);
        }
コード例 #6
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);
        }
コード例 #7
0
        public void SetMessage_WhiteSpaceMessage()
        {
            // Arrange

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

            // Act

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

            // Assert

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

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

            // Act

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

            // Assert

            Assert.IsType <ArgumentNullException>(exception);
        }
コード例 #9
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);
        }
コード例 #10
0
        public void Constructor_NullInnerException()
        {
            // Arrange

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

            // Act

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

            // Assert

            Assert.Null(exception);
        }
コード例 #11
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);
        }
コード例 #12
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);
        }
コード例 #13
0
        public void Error_WithJustCode()
        {
            // Arrange

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

            // Act

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

            // Assert

            Assert.Equal(message, warning.Message);
            Assert.Equal(ValidationIssueLevel.Error, warning.Level);
            Assert.Equal(code, warning.Code);
            Assert.Null(warning.MemberNames);
        }
コード例 #14
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);
        }
コード例 #15
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);
        }
コード例 #16
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);
        }
コード例 #17
0
        public void Error_WithJustMemberNames()
        {
            // Arrange

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

            // Act

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

            // Assert

            Assert.Equal(message, warning.Message);
            Assert.Equal(ValidationIssueLevel.Error, warning.Level);
            Assert.Null(warning.Code);
            Assert.Equal(memberNames, warning.MemberNames);
        }
コード例 #18
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);
        }
コード例 #19
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);
        }
コード例 #20
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);
        }
コード例 #21
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);
        }
コード例 #22
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);
        }
コード例 #23
0
        public void Error_Valid()
        {
            // Arrange

            var message = "FooBar";
            var code    = "bizz buzz barr";
            var names   = ImmutableHashSet.Create("Foo", "Bar");

            // Act

            var warning = ValidationIssue.Error(
                message,
                code,
                names
                );

            // Assert

            Assert.Equal(message, warning.Message);
            Assert.Equal(ValidationIssueLevel.Error, warning.Level);
            Assert.Equal(code, warning.Code);
            Assert.Equal(names, warning.MemberNames);
        }
コード例 #24
0
        public void AddError_VaryingSetsWithMembers_NonGeneric(
            int initialNumberOfValidationIssues)
        {
            // Arrange

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

            var message     = "FooBar";
            var memberNames = ImmutableHashSet.Create("Foo", "Bar");
            var initial     = new OperationResult(initialValidationIssues);

            // Act

            var updated = initial.AddError(message, memberNames: memberNames);

            // Assert

            var issue = ValidationIssue.Error(message, memberNames);

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