public async Task 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(contentLinkUrlResolver, inlineContentItemsProcessor, typeProvider, propertyMapper, new DeliveryJsonSerializer(), new HtmlParser()); Assert.Null(await modelProvider.GetContentItemModelAsync <object>(item, linkedItems)); }
public async Task 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(contentLinkUrlResolver, processor, typeProvider, propertyMapper, new DeliveryJsonSerializer(), new HtmlParser()); var item = JToken.FromObject(Rt3); var linkedItems = JToken.FromObject(LinkedItemsForItemReferencingItself); var result = await retriever.GetContentItemModelAsync <ContentItemWithSingleRte>(item, linkedItems); Assert.Equal("<span>RT</span><span>RT</span>", result.Rt); Assert.IsType <ContentItemWithSingleRte>(result); }
public async Task 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(contentLinkUrlResolver, processor, typeProvider, propertyMapper, new DeliveryJsonSerializer(), new HtmlParser()); 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 = await retriever.GetContentItemModelAsync <ContentItemWithSingleRte>(item, linkedItems); Assert.Equal(expectedResult, result.Rt); Assert.IsType <ContentItemWithSingleRte>(result); }