示例#1
0
        public void For_WithMemberAndName_ReturnsMemberValidationRule()
        {
            var validatorStub = new FooValidator();

            var rule = validatorStub.For(p => p.Bar, nameof(Foo.Bar));

            Assert.IsType <MemberValidationRule <Foo, string> >(rule);
        }
示例#2
0
        public async Task ValidateAsync_AllRulesSucceed_DoesNotThrow()
        {
            var foo = new Foo();

            var ruleMocks = new List <Mock <IValidationRule <Foo> > >
            {
                this.SetupRuleMock(foo, ValidationResult.Valid)
            };

            var validatorStub = new FooValidator(ruleMocks.Select(p => p.Object).ToList());

            await validatorStub.ValidateAsync(foo);
        }
示例#3
0
        public async Task ValidateAsync_OneRuleFails_Throws()
        {
            var foo = new Foo();

            var ruleMocks = new List <Mock <IValidationRule <Foo> > >
            {
                this.SetupRuleMock(foo, ValidationResult.Error("rule1"))
            };

            var validatorStub = new FooValidator(ruleMocks.Select(p => p.Object).ToList());

            var exception = await Assert.ThrowsAsync <ValidationException>(() => validatorStub.ValidateAsync(foo));

            Assert.NotNull(exception.Result);
            Assert.False(exception.Result.IsValid);
            Assert.Equal("rule1", exception.Result.Errors.Single().Message);
        }
示例#4
0
        public async Task TryValidateAsync_OneRuleFails_ReturnsInvalidResult()
        {
            var foo = new Foo();

            var ruleMocks = new List <Mock <IValidationRule <Foo> > >
            {
                this.SetupRuleMock(foo, ValidationResult.Error("rule1"))
            };

            var validatorStub = new FooValidator(ruleMocks.Select(p => p.Object).ToList());

            var result = await validatorStub.TryValidateAsync(foo);

            ruleMocks.ForEach(p => p.Verify(mock => mock.EvaluateAsync(foo), Times.Once()));
            Assert.False(result.IsValid);
            Assert.Equal("rule1", result.Errors.Single().Message);
        }
示例#5
0
        public async Task TryValidateAsync_AllRulesSucceed_ReturnsValidResult()
        {
            var foo = new Foo();

            var ruleMocks = new List <Mock <IValidationRule <Foo> > >
            {
                this.SetupRuleMock(foo, ValidationResult.Valid),
                this.SetupRuleMock(foo, ValidationResult.Valid)
            };

            var validatorStub = new FooValidator(ruleMocks.Select(p => p.Object).ToList());

            var result = await validatorStub.TryValidateAsync(foo);

            ruleMocks.ForEach(p => p.Verify(mock => mock.EvaluateAsync(foo), Times.Once()));
            Assert.True(result.IsValid);
        }
示例#6
0
        public void AddRule_WithoutRule_Throws()
        {
            var validatorStub = new FooValidator();

            Assert.Throws <ArgumentNullException>(() => validatorStub.AddRule(null));
        }
示例#7
0
        public void For_WithoutName_Throws()
        {
            var validatorStub = new FooValidator();

            Assert.Throws <ArgumentNullException>(() => validatorStub.For <string>(p => p.Bar, null));
        }
示例#8
0
        public void For_WithoutValueExpression_Throws()
        {
            var validatorStub = new FooValidator();

            Assert.Throws <ArgumentNullException>(() => validatorStub.For <string>(null, nameof(Foo.Bar)));
        }