ValidatorBuilderContext GetCollectionItemContext(ValidatorBuilderContext parentContext, Type validatedType) { if (parentContext.ManifestValue.CollectionItemValue != null) { return(new ValidatorBuilderContext(parentContext.ManifestValue.CollectionItemValue)); } var manifestValue = new ManifestCollectionItem { Parent = parentContext.ManifestValue, ValidatedType = validatedType, }; parentContext.ManifestValue.CollectionItemValue = manifestValue; return(new ValidatorBuilderContext(manifestValue)); }
/// <inheritdoc/> public IManifestItem GetManifestItem(ModelToManifestConversionContext context) { if (context.ConversionType != ModelToManifestConversionType.CollectionItem) { return(next.GetManifestItem(context)); } var collectionItem = new ManifestCollectionItem { Parent = context.ParentManifestValue.Parent, ValidatedType = context.ValidatedType, }; if (context.ParentManifestValue is ManifestValueBase mvb) { mvb.CollectionItemValue = collectionItem; } return(collectionItem); }
public void GetContextForMemberThatAlreadyExistsAsCollectionItemShouldReturnSameManifestValue([Frozen] IStaticallyReflects reflect, [ManifestModel] ValidatorBuilderContext validationContext, ValidatorBuilderContextFactory sut, [ManifestModel] ManifestCollectionItem collectionValue) { Mock.Get(reflect) .Setup(x => x.Member(It.IsAny <Expression <Func <ValidatedObject, string> > >())) .Returns((Expression <Func <ValidatedObject, string> > accessor) => Reflect.Member(accessor)); validationContext.ManifestValue.CollectionItemValue = collectionValue; var result = sut.GetContextForMember <ValidatedObject, IEnumerable <string> >(v => v.Strings, validationContext, true); Assert.That(result.ManifestValue, Is.SameAs(collectionValue)); }