/// <see href="https://github.com/Kentico/delivery-sdk-net/issues/126"/> public void GetContentItemModelRetrievingContentModelWithUnknownTypeReturnNull() { var item = JToken.FromObject(rt4); var linkedItems = JToken.FromObject(linkedItemsForItemWithTwoReferencedContentItems); var fakeDeliverClient = A.Fake <IDeliveryClient>(); var codeFirstTypeProvider = A.Fake <ICodeFirstTypeProvider>(); A.CallTo(() => codeFirstTypeProvider.GetType("newType")).Returns(null); var modelProvider = new CodeFirstModelProvider(fakeDeliverClient); modelProvider.TypeProvider = codeFirstTypeProvider; 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 fakeDeliverClient = A.Fake <IDeliveryClient>(); var codeFirstTypeProvider = A.Fake <ICodeFirstTypeProvider>(); A.CallTo(() => codeFirstTypeProvider.GetType(A <string> ._)).Returns(typeof(ContentItemWithSingleRTE)); var processor = new InlineContentItemsProcessor(null, null); processor.RegisterTypeResolver(new RichTextInlineResolver()); var retriever = new CodeFirstModelProvider(fakeDeliverClient); retriever.TypeProvider = codeFirstTypeProvider; A.CallTo(() => fakeDeliverClient.InlineContentItemsProcessor).Returns(processor); var item = JToken.FromObject(rt3); var modularContent = JToken.FromObject(modularContentForItemReferencingItself); var result = retriever.GetContentItemModel <ContentItemWithSingleRTE>(item, modularContent); Assert.Equal("<span>RT</span><span>RT</span>", result.RT); Assert.IsType <ContentItemWithSingleRTE>(result); }
// During processing of inline content items, item which detects circular dependency ( A refs B, B refs A ) should resolve resolved item // as if there were no inline content items, which will prevent circular dependency public void RetrievingContentModelWithCircularDependencyDoesNotCycle() { var fakeDeliverClient = A.Fake <IDeliveryClient>(); var codeFirstTypeProvider = A.Fake <ICodeFirstTypeProvider>(); A.CallTo(() => codeFirstTypeProvider.GetType(A <string> ._)).Returns(typeof(ContentItemWithSingleRTE)); var processor = new InlineContentItemsProcessor(null, null); processor.RegisterTypeResolver(new RichTextInlineResolver()); var retriever = new CodeFirstModelProvider(fakeDeliverClient); retriever.TypeProvider = codeFirstTypeProvider; A.CallTo(() => fakeDeliverClient.InlineContentItemsProcessor).Returns(processor); var item = JToken.FromObject(rt1); var linkedItems = JToken.FromObject(linkedItemsForItemWithTwoReferencedContentItems); var result = retriever.GetContentItemModel <ContentItemWithSingleRTE>(item, linkedItems); Assert.Equal("<span>FirstRT</span><span>SecondRT</span><span>FirstRT</span>", result.RT); Assert.IsType <ContentItemWithSingleRTE>(result); }