public void GetValidatorManifestWithRuleContextShouldReturnAValidatorBuilder([Frozen] IServiceProvider serviceProvider, ImportedValidatorBuilderManifestFactory sut, IGetsValidatorBuilderContext ruleContextFactory, IGetsRuleBuilder ruleBuilderFactory, IGetsValueAccessorBuilder valueBuilderFactory, IGetsValidatorManifest validatorManifestFactory, IResolvesServices resolver, [ManifestModel] ValidatorBuilderContext context) { Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsValidatorBuilderContext))).Returns(ruleContextFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsRuleBuilder))).Returns(ruleBuilderFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsValueAccessorBuilder))).Returns(valueBuilderFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsValidatorManifest))).Returns(validatorManifestFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IResolvesServices))).Returns(resolver); Mock.Get(resolver).Setup(x => x.ResolveService <object>(typeof(GenericValidatorDefinition <object>))).Returns(() => new GenericValidatorDefinition <object>()); var result = sut.GetValidatorManifest(typeof(GenericValidatorDefinition <object>), context); Assert.That(result, Is.InstanceOf <ValidatorBuilder <object> >()); }
public void GetValidatorManifestShouldThrowForAnInvalidDefinitionWithTwoInterfaces(ImportedValidatorBuilderManifestFactory sut, [ManifestModel] ValidatorBuilderContext context) { Assert.That(() => sut.GetValidatorManifest(typeof(InvalidDefinitionWithTwoInterfaces), context), Throws.ArgumentException.And.Message.StartWith("The validation definition type must implement IBuildsValidator<T> a maximum of once, for one generic validated type.")); }
public void GetValidatorManifestShouldExecuteConfigureValidatorFromDefinitionUponBuilder([Frozen] IServiceProvider serviceProvider, ImportedValidatorBuilderManifestFactory sut, IGetsValidatorBuilderContext ruleContextFactory, IGetsRuleBuilder ruleBuilderFactory, IGetsValueAccessorBuilder valueBuilderFactory, IGetsValidatorManifest validatorManifestFactory, IResolvesServices resolver, [ManifestModel] ValidatorBuilderContext context, ValidatedObject obj) { Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsValidatorBuilderContext))).Returns(ruleContextFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsRuleBuilder))).Returns(ruleBuilderFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsValueAccessorBuilder))).Returns(valueBuilderFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IGetsValidatorManifest))).Returns(validatorManifestFactory); Mock.Get(serviceProvider).Setup(x => x.GetService(typeof(IResolvesServices))).Returns(resolver); Mock.Get(resolver).Setup(x => x.ResolveService <object>(typeof(ValidatedObjectDefinition))).Returns(() => new ValidatedObjectDefinition()); sut.GetValidatorManifest(typeof(ValidatedObjectDefinition), context); Assert.That(() => context.ManifestValue.IdentityAccessor(obj), Is.EqualTo(obj.Identity), $@"Because the definition sets up the context to use the {nameof(ValidatedObject.Identity)} property for identity, asserting that they are equal proves that the configuration function was executed."); }