public void Create_Factory_Action_Will_Return_An_Action_That_Can_Be_Passed_Back_And_Actioned_Later()
        {
            Action <IValidatorConfigurationExpression> configure = cfg =>
            {
                cfg.AddProfile <Profile2>();
                cfg.AddProfile <Profile2>();
            };

            _subject = new AutoValidation(configure);

            var model = new Model1
            {
                Age  = 23,
                Name = "Jon Hawkins"
            };

            // act
            var factoryFunc = _subject.CreateFactoryFunc();

            var factory = factoryFunc();

            // assert
            factory.Should().BeOfType <ValidatorFactory>();

            var validator = factory.Create <Model1>();

            validator.Should().NotBeNull();
            var validationResult = validator.Validate(model);

            validationResult.Should().NotBeNull();
            validationResult.Success.Should().BeTrue();
        }
        public void Create_Factory_Action_Will_Return_New_Instance_Each_Time()
        {
            _subject = new AutoValidation(cfg =>
            {
                cfg.AddProfile <Profile2>();
                cfg.AddProfile <Profile2>();
            });

            // act
            var factoryFunc = _subject.CreateFactoryFunc();

            var factory1 = factoryFunc();
            var factory2 = factoryFunc();

            // assert
            factory1.Equals(factory2).Should().BeFalse();
        }