コード例 #1
0
        public void Handler_Shall_Pass_Validattion_to_next()
        {
            var validations = new Dictionary <ValidationTypes, IValidation>()
            {
                {
                    ValidationTypes.Security,
                    new SecurityValidation(
                        ValidationResult.Valid,
                        new DateTime(2019, 10, 1))
                },
                {
                    ValidationTypes.Comfort,
                    new ComfortValidation(
                        ValidationResult.Valid,
                        new DateTime(2019, 10, 1))
                }
            };

            IValidationRequest request
                = new ValidationRequest(validations);

            IHandler comfortHandler
                = new ValidationHandler <IValidationRequest, ComfortValidation>(
                      request,
                      new ComfortValidation(ValidationResult.OnReview, new DateTime(2019, 10, 1)),
                      null);
            IHandler securityHandler
                = new ValidationHandler <IValidationRequest, SecurityValidation>(
                      request,
                      new SecurityValidation(ValidationResult.Valid, new DateTime(2019, 10, 1)),
                      comfortHandler);

            securityHandler.Handle();
        }
コード例 #2
0
        private static Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            (int code, string error) = ValidationHandler.Handle(exception);

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = code;
            return(context.Response.WriteAsync(error));
        }
        public void Handle_InnerIsCalled()
        {
            IRequestHandler <Request, string> inner = Substitute.For <IRequestHandler <Request, string> >();
            var logger    = Substitute.For <ILogger>();
            var validator = Substitute.For <IValidator <Request> >();

            validator.Validate(Arg.Any <Request>()).Returns(v => new ValidationResult());

            var handler = new ValidationHandler <Request, string>(inner, validator, logger);

            handler.Handle(new Request());

            inner.Received().Handle(Arg.Any <Request>());
        }
        public void Handle_ThrowsBusniessRulexception()
        {
            IRequestHandler <Request, string> inner = Substitute.For <IRequestHandler <Request, string> >();
            var logger    = Substitute.For <ILogger>();
            var validator = new StaticValidator(false);

            var handler = new ValidationHandler <Request, string>(inner, validator, logger);

            var e = Assert.Throws <BusinessRuleException>(() => handler.Handle(new Request()));

            Assert.AreEqual(e.Violations.First().PropertyName, "foo");
            Assert.AreEqual(e.Violations.First().Violation, "bar");

            inner.DidNotReceive().Handle(Arg.Any <Request>());
        }