public async Task Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false()
        {
            var validator = new SharedAsyncConditionValidator();
            var person    = new Person();          // fails the shared When predicate

            var result = await validator.ValidateAsync(person);

            result.Errors.Count.ShouldEqual(0);
        }
        public async Task Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_is_true()
        {
            var validator = new SharedAsyncConditionValidator();
            var person    = new Person()
            {
                Id = 4                 // triggers the shared When predicate
            };

            var result = await validator.ValidateAsync(person);

            result.Errors.Count.ShouldEqual(3);
        }
        public async Task Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied()
        {
            var validator = new SharedAsyncConditionValidator();
            var person    = new Person()
            {
                Id       = 4,                                   // triggers the shared When predicate
                Forename = "Kevin",                             // satisfies RuleFor( x => x.Forename ).NotEmpty()
                Surname  = "Smith",                             // satisfies RuleFor( x => x.Surname ).NotEmpty().Equal( "Smith" )
            };

            var result = await validator.ValidateAsync(person);

            result.Errors.Count.ShouldEqual(0);
        }