public void GetContentItemModelRetrievingContentModelWithUnknownTypeReturnNull() { var item = JToken.FromObject(Rt4); var linkedItems = JToken.FromObject(LinkedItemsForItemWithTwoReferencedContentItems); var contentLinkUrlResolver = A.Fake <IContentLinkUrlResolver>(); var inlineContentItemsProcessor = A.Fake <IInlineContentItemsProcessor>(); var typeProvider = A.Fake <ITypeProvider>(); var propertyMapper = A.Fake <IPropertyMapper>(); A.CallTo(() => typeProvider.GetType("newType")).Returns(null); var modelProvider = new ModelProvider(new ContentLinkResolver(contentLinkUrlResolver), inlineContentItemsProcessor, typeProvider, propertyMapper); Assert.Null(modelProvider.GetContentItemModel <object>(item, linkedItems)); }
// In case item is referencing itself ( A refs A ) we'd like to go through second processing as if there were no inline content items, // this is same as in other cases, because as soon as we start processing item which is already being processed we remove inline content items. public void RetrievingContentModelWithItemInlineReferencingItselfDoesNotCycle() { var typeProvider = A.Fake <ITypeProvider>(); var contentLinkUrlResolver = A.Fake <IContentLinkUrlResolver>(); var propertyMapper = A.Fake <IPropertyMapper>(); A.CallTo(() => typeProvider.GetType(A <string> ._)).Returns(typeof(ContentItemWithSingleRte)); A.CallTo(() => propertyMapper.IsMatch(A <PropertyInfo> ._, A <string> ._, A <string> ._)).Returns(true); var processor = InlineContentItemsProcessorFactory .WithResolver(ResolveItemWithSingleRte) .Build(); var retriever = new ModelProvider(new ContentLinkResolver(contentLinkUrlResolver), processor, typeProvider, propertyMapper); var item = JToken.FromObject(Rt3); var linkedItems = JToken.FromObject(LinkedItemsForItemReferencingItself); var result = retriever.GetContentItemModel <ContentItemWithSingleRte>(item, linkedItems); Assert.Equal("<span>RT</span><span>RT</span>", result.Rt); Assert.IsType <ContentItemWithSingleRte>(result); }
public void RetrievingNonExistentContentModelCreatesWarningInRichtext() { var typeProvider = A.Fake <ITypeProvider>(); var contentLinkUrlResolver = A.Fake <IContentLinkUrlResolver>(); var propertyMapper = A.Fake <IPropertyMapper>(); A.CallTo(() => typeProvider.GetType(A <string> ._)).Returns(null); A.CallTo(() => propertyMapper.IsMatch(A <PropertyInfo> ._, A <string> ._, A <string> ._)).Returns(true); var processor = InlineContentItemsProcessorFactory .WithResolver(factory => factory.ResolveTo <UnknownContentItem>(unknownItem => $"Content type '{unknownItem.Type}' has no corresponding model.")) .Build(); var retriever = new ModelProvider(new ContentLinkResolver(contentLinkUrlResolver), processor, typeProvider, propertyMapper); var item = JToken.FromObject(Rt5); var linkedItems = JToken.FromObject(LinkedItemWithNoModel); var expectedResult = $"<span>RT</span>Content type '{linkedItems.SelectToken("linkedItemWithNoModel.system.type")}' has no corresponding model."; var result = retriever.GetContentItemModel <ContentItemWithSingleRte>(item, linkedItems); Assert.Equal(expectedResult, result.Rt); Assert.IsType <ContentItemWithSingleRte>(result); }