public void GetValueAccessorBuilderShouldReturnAnAccessorBuilder([ManifestModel] ValidatorBuilderContext context, IGetsRuleBuilder ruleBuilderFactory, IGetsValidatorManifest validatorManifestFactory, IGetsValidatorBuilderContext contextFactory) { var sut = new ValueAccessorBuilderFactory(() => ruleBuilderFactory, () => validatorManifestFactory, () => contextFactory); Assert.That(() => sut.GetValueAccessorBuilder <ValidatedObject, string>(context, c => { }), Is.Not.Null); }
/// <summary> /// Initializes a new instance of <see cref="ValueAccessorBuilder{TValidated, TValue}"/>. /// </summary> /// <param name="context">The context which should be used for newly-added rule-builders.</param> /// <param name="ruleBuilderFactory">A factory for rule-builder instances.</param> /// <param name="validatorManifestFactory">A factory for validator manifest instances.</param> /// <param name="builderContextFactory">A factory for validator builder contexts.</param> public ValueAccessorBuilder(ValidatorBuilderContext context, IGetsRuleBuilder ruleBuilderFactory, IGetsValidatorManifest validatorManifestFactory, IGetsValidatorBuilderContext builderContextFactory) { this.validatorManifestFactory = validatorManifestFactory ?? throw new ArgumentNullException(nameof(validatorManifestFactory)); this.builderContextFactory = builderContextFactory ?? throw new ArgumentNullException(nameof(builderContextFactory)); this.context = context ?? throw new ArgumentNullException(nameof(context)); this.ruleBuilderFactory = ruleBuilderFactory ?? throw new ArgumentNullException(nameof(ruleBuilderFactory)); }
public void GetValueAccessorBuilderShouldExecuteConfigurationUponBuilder([ManifestModel] ValidatorBuilderContext context, IGetsRuleBuilder ruleBuilderFactory, IGetsValidatorManifest validatorManifestFactory, IGetsValidatorBuilderContext contextFactory) { var sut = new ValueAccessorBuilderFactory(() => ruleBuilderFactory, () => validatorManifestFactory, () => contextFactory); sut.GetValueAccessorBuilder <ValidatedObject, string>(context, c => c.AddRuleWithParent <StringValueRule>()); Mock.Get(ruleBuilderFactory) .Verify(x => x.GetRuleBuilder <StringValueRule>(context, It.IsAny <Action <IConfiguresRule <StringValueRule> > >()), Times.Once); }
public void AddRulesShouldAddBuilderReturnedFromManifestFactory([Frozen, ManifestModel] ValidatorBuilderContext context, [Frozen] IGetsValidatorManifest manifestFactory, ValidatorBuilder <ValidatedObject> sut, IGetsManifestValue manifest, [ManifestModel] ManifestValue value) { Mock.Get(manifestFactory) .Setup(x => x.GetValidatorManifest(typeof(ValidatedObjectValidator), context)) .Returns(manifest); Mock.Get(manifest).Setup(x => x.GetManifestValue()).Returns(() => value); sut.AddRules <ValidatedObjectValidator>(); Assert.That(sut.GetManifestValue().Children.Single(), Is.SameAs(value)); }
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 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."); }