/// <summary>
        /// Allows a ruleset to be specified for the validation.
        /// </summary>
        /// <param name="validator">Instance of the validator being extended.</param>
        /// <param name="target">Instance of the object to be validated.</param>
        /// <param name="ruleSet">Rule set to validate.</param>
        /// <param name="includeDefaultRuleset">Optional parameter indicating whether the default ruleset should be used.  True by default.</param>
        /// <returns>An enumeration of ValidationResults.  An entry for each validation error or an empty enumeration for Valid.</returns>
        public static IEnumerable <ValidationResult> ValidateFor(this ICanValidate validator, object target, string ruleSet, bool includeDefaultRuleset = true)
        {
            var rulesets = includeDefaultRuleset ? "default," + ruleSet : ruleSet;
            var method   = validator.GetType().GetTypeInfo().GetMethods().First(m => m.Name == "ValidateFor" && m.GetParameters().Length == 2);

            return((IEnumerable <ValidationResult>)method.Invoke(validator, new[] { target, rulesets }));
        }
Esempio n. 2
0
        public CommandScenario()
        {
            principal = new GenericPrincipal(new GenericIdentity("test"), new string[] { });

            event_source    = new Mock <IEventSource>();
            GeneratedEvents = new UncommittedEventStream(event_source.Object);
            uncommitted_event_stream_coordinator = new Mock <IUncommittedEventStreamCoordinator>();
            process_method_invoker         = new Mock <IProcessMethodInvoker>();
            call_context_mock              = new Mock <ICallContext>();
            execution_context_factory_mock = new Mock <IExecutionContextFactory>();
            execution_context_manager      = new ExecutionContextManager(execution_context_factory_mock.Object, call_context_mock.Object);
            command_context_factory        = new CommandContextFactory(uncommitted_event_stream_coordinator.Object, process_method_invoker.Object, execution_context_manager);
            command_context_manager        = new CommandContextManager(command_context_factory);

            command_handler_manager = new Mock <ICommandHandlerManager>();
            command_handler_manager.Setup(m => m.Handle(It.IsAny <ICommand>())).Callback((ICommand c) => command_handler.Handle((dynamic)c));

            localizer = new Mock <ILocalizer>();

            command_validators_mock = new Mock <ICommandValidators>();

            command_security_manager_mock = new Mock <ICommandSecurityManager>();
            //TODO: Allow spec'ing of Security
            command_security_manager_mock.Setup(s => s.Authorize(It.IsAny <ICommand>())).Returns(new AuthorizationResult());

            command_coordinator = new CommandCoordinator(
                command_handler_manager.Object,
                command_context_manager,
                command_security_manager_mock.Object,
                command_validators_mock.Object,
                localizer.Object,
                Mock.Of <IExceptionPublisher>(),
                Mock.Of <ILogger>());

            null_validator_mock = new Mock <ICanValidate <T> >();
            null_validator      = null_validator_mock.Object;
            input_validator     = null_validator;
            business_validator  = null_validator;

            uncommitted_event_stream_coordinator.Setup(es => es.Commit(It.IsAny <TransactionCorrelationId>(), It.IsAny <UncommittedEventStream>()))
            .Callback((TransactionCorrelationId i, UncommittedEventStream ues) => RecordGeneratedEvents(ues));
        }
Esempio n. 3
0
 public static void RegisterValidatorFor <T>(T entity, ICanValidate <T> validator)
     where T : ICanValidate <T>
 {
     Validators.Add(entity.GetType(), validator);
 }
Esempio n. 4
0
 /// <summary>
 /// Specifies validators to be used for input and business validation of the <see cref="ICommand">Command</see> in this scenario.
 /// </summary>
 /// <param name="inputValidator">Input Validator to use for input validation</param>
 /// <param name="businessValidator">Business Validator to use for business validation</param>
 public void ValidatedWith(ICanValidate <T> inputValidator, ICanValidate <T> businessValidator)
 {
     input_validator    = inputValidator;
     business_validator = businessValidator;
 }
Esempio n. 5
0
 /// <summary>
 /// Specifices <see cref="ICanValidate">Validator</see> to be used for Business Validation of the <see cref="ICommand">Command</see> in this scenario.
 /// </summary>
 /// <param name="businessValidator">Business validator to be used.</param>
 public void BusinessRulesValidatedWith(ICanValidate <T> businessValidator)
 {
     ValidatedWith(null_validator, businessValidator);
 }
Esempio n. 6
0
 /// <summary>
 /// Specifies <see cref="ICanValidate">Validator</see>"/> to be used for Input Validation of the <see cref="ICommand">Command</see> in this scenario.
 /// </summary>
 /// <param name="inputValidator">Input validator to be used.</param>
 public void InputValidatedWith(ICanValidate <T> inputValidator)
 {
     ValidatedWith(inputValidator, null_validator);
 }
Esempio n. 7
0
 internal void Register(ICanValidate component, Action onRevalidation)
 {
     _registeredComponents.Add(component, onRevalidation);
 }