public void GetValidatorNonGenericShouldReturnValidatorManifest([Frozen] IGetsValidatorFromManifest validatorFromManifestFactory,
                                                                        BaseValidatorFactory sut,
                                                                        [ManifestModel] ValidationManifest manifest,
                                                                        IValidator validator)
        {
            Mock.Get(validatorFromManifestFactory).Setup(x => x.GetValidator(manifest)).Returns(validator);

            Assert.That(() => sut.GetValidator(manifest), Is.SameAs(validator));
        }
 /// <summary>
 /// Initialises a new instance of <see cref="BaseValidatorFactory"/>.
 /// </summary>
 /// <param name="manifestFromBuilderProvider">A validatio- manifest-from-builder provider.</param>
 /// <param name="validatorFromManifestFactory">A validator-from-manifest factory.</param>
 /// <exception cref="ArgumentNullException">If any parameter is <see langword="null" />.</exception>
 public BaseValidatorFactory(IGetsManifestFromBuilder manifestFromBuilderProvider, IGetsValidatorFromManifest validatorFromManifestFactory)
 {
     this.manifestFromBuilderFactory    = manifestFromBuilderProvider ?? throw new ArgumentNullException(nameof(manifestFromBuilderProvider));
     this.validatorFromManifestProvider = validatorFromManifestFactory ?? throw new ArgumentNullException(nameof(validatorFromManifestFactory));
 }
        public void GetValidatorGenericShouldReturnGenericValidatorFromCreatedManifest([Frozen] IGetsManifestFromBuilder manifestFromBuilderProvider,
                                                                                       [Frozen] IGetsValidatorFromManifest validatorFromManifestFactory,
                                                                                       BaseValidatorFactory sut,
                                                                                       IBuildsValidator <object> builder,
                                                                                       [ManifestModel] ValidationManifest manifest)
        {
            Mock.Get(manifestFromBuilderProvider).Setup(x => x.GetManifest(builder)).Returns(manifest);
            var validator           = new Mock <IValidator <object> >();
            var nonGenericValidator = validator.As <IValidator>();

            Mock.Get(validatorFromManifestFactory).Setup(x => x.GetValidator(manifest)).Returns(nonGenericValidator.Object);

            Assert.That(() => sut.GetValidator(builder), Is.SameAs(nonGenericValidator.Object));
        }