public void CreatePageModel_ExampleSiteHomePage_Success() { Page testPage = (Page)TestSession.GetObject(TestFixture.ExampleSiteHomePageWebDavUrl); RenderedItem testRenderedItem; PageModelData pageModel = CreatePageModel(testPage, out testRenderedItem); Assert.IsNotNull(pageModel.MvcData, "pageModel.MvcData"); Assert.IsNull(pageModel.HtmlClasses, "pageModel.HtmlClasses"); Assert.IsNotNull(pageModel.XpmMetadata, "pageModel.XpmMetadata"); Assert.IsNull(pageModel.ExtensionData, "pageModel.ExtensionData"); Assert.AreEqual("10015", pageModel.SchemaId, "pageModel.SchemaId"); Assert.IsNotNull(pageModel.Metadata, "pageModel.Metadata"); Assert.AreEqual("640", pageModel.Id, "pageModel.Id"); Assert.AreEqual("Home", pageModel.Title, "pageModel.Title"); Assert.AreEqual("/index", pageModel.UrlPath, "pageModel.UrlPath"); Assert.IsNotNull(pageModel.Meta, "pageModel.Meta"); Assert.AreEqual(7, pageModel.Meta.Count, "pageModel.Meta.Count"); Assert.IsNotNull(pageModel.Regions, "pageModel.Regions"); Assert.AreEqual(5, pageModel.Regions.Count, "pageModel.Regions.Count"); AssertExpectedIncludePageRegions(pageModel.Regions, new [] { "Header", "Footer" }); KeywordModelData sitemapKeyword = (KeywordModelData)pageModel.Metadata["sitemapKeyword"]; AssertNotExpanded(sitemapKeyword, false, "sitemapKeyword"); // Keyword Should not be expanded because Category is publishable Assert.IsNotNull(testRenderedItem, "testRenderedItem"); Assert.AreEqual(5, testRenderedItem.Binaries.Count, "testRenderedItem.Binaries.Count"); Assert.AreEqual(5, testRenderedItem.ChildRenderedItems.Count, "testRenderedItem.ChildRenderedItems.Count"); }
public void CreatePageModel_KeywordModel_Success() { Page testPage = (Page)TestSession.GetObject(TestFixture.Tsi811PageWebDavUrl); RenderedItem testRenderedItem; PageModelData pageModel = CreatePageModel(testPage, out testRenderedItem); Assert.IsNotNull(pageModel.SchemaId, "pageModel.SchemaId"); ContentModelData pageMetadata = pageModel.Metadata; Assert.IsNotNull(pageMetadata, "pageMetadata"); KeywordModelData pageKeyword = pageMetadata["pageKeyword"] as KeywordModelData; Assert.IsNotNull(pageKeyword, "pageKeyword"); Assert.AreEqual("10120", pageKeyword.Id, "pageKeyword.Id"); Assert.AreEqual("Test Keyword 2", pageKeyword.Title, "pageKeyword.Title"); ContentModelData keywordMetadata = pageKeyword.Metadata; Assert.IsNotNull(keywordMetadata, "keywordMetadata"); Assert.AreEqual("This is textField of Test Keyword 2", keywordMetadata["textField"], "keywordMetadata['textField']"); Assert.AreEqual("999.99", keywordMetadata["numberField"], "keywordMetadata['numberField']"); KeywordModelData keywordField = keywordMetadata["keywordField"] as KeywordModelData; Assert.IsNotNull(keywordField, "keywordField"); }
public void KeywordModelData_SerializeDeserialize_Success() { KeywordModelData testKeywordModel = CreateTestKeywordModel("KeywordModelData_SerializeDeserialize_Success"); KeywordModelData deserializedKeywordModel = JsonSerializeDeserialize(testKeywordModel); AssertEqualKeywordModels(testKeywordModel, deserializedKeywordModel, "deserializedKeywordModel"); }
protected virtual object MapKeyword(KeywordModelData keywordModelData, Type targetType, ILocalization localization) { if (typeof(KeywordModel).IsAssignableFrom(targetType)) { KeywordModel result; if (keywordModelData.SchemaId == null) { result = new KeywordModel { ExtensionData = keywordModelData.ExtensionData }; } else { MappingData keywordMappingData = new MappingData { SourceViewModel = keywordModelData, ModelType = targetType, PropertyValidation = new Validation { MainSchema = SemanticMapping.GetSchema(keywordModelData.SchemaId, localization), InheritedSchemas = GetInheritedSemanticSchemas(keywordModelData as ViewModelData, localization) }, MetadataFields = keywordModelData.Metadata, Localization = localization }; result = (KeywordModel)CreateViewModel(keywordMappingData); } result.Id = keywordModelData.Id; result.Title = keywordModelData.Title; result.Description = keywordModelData.Description ?? string.Empty; result.Key = keywordModelData.Key ?? string.Empty; result.TaxonomyId = keywordModelData.TaxonomyId; return(result); } if (targetType == typeof(Tag)) { return(new Tag { DisplayText = GetKeywordDisplayText(keywordModelData), Key = keywordModelData.Key, TagCategory = localization.GetCmUri(keywordModelData.TaxonomyId, (int)ItemType.Category) }); } if (targetType == typeof(bool)) { string key = string.IsNullOrEmpty(keywordModelData.Key) ? keywordModelData.Title : keywordModelData.Key; return(Convert.ToBoolean(key)); } return(GetKeywordDisplayText(keywordModelData)); }
private void AssertEqualKeywordModels(KeywordModelData expected, KeywordModelData actual, string subject) { AssertEqualViewModels(expected, actual, subject); Assert.AreEqual(expected.Id, actual.Id, subject + ".Id"); Assert.AreEqual(expected.Title, actual.Title, subject + ".Title"); Assert.AreEqual(expected.Description, actual.Description, subject + ".Description"); Assert.AreEqual(expected.Key, actual.Key, subject + ".Key"); Assert.AreEqual(expected.TaxonomyId, actual.TaxonomyId, subject + ".TaxonomyId"); }
/// <summary> /// Creates a Keyword Data Model from a given CM Keyword object. /// </summary> /// <param name="keyword">The CM Keyword.</param> /// <param name="expandLinkDepth">The level of Component/Keyword links to expand.</param> public KeywordModelData CreateKeywordModel(Keyword keyword, int expandLinkDepth) { KeywordModelData keywordModelData = null; foreach (IKeywordModelDataBuilder keywordModelBuilder in _keywordModelBuilders) { keywordModelBuilder.BuildKeywordModel(ref keywordModelData, keyword, expandLinkDepth); } return(keywordModelData); }
private TrackingKeyCondition MapTrackingKeyCondition(AM.TrackingKeyCondition trackingKeyCondition) { KeywordModelData kwd = Pipeline.CreateKeywordModel(trackingKeyCondition.Keyword, Pipeline.Settings.ExpandLinkDepth); return(new TrackingKeyCondition { Operator = (ConditionOperator)trackingKeyCondition.Operator, Negate = true, Value = trackingKeyCondition.Value, TrackingKeyTitle = kwd.Title }); }
private static void AssertNotExpanded(KeywordModelData keywordModelData, bool hasMetadata, string subject) { Assert.IsNotNull(keywordModelData.Id, subject + ".Id"); Assert.IsNull(keywordModelData.Title, subject + ".Title"); Assert.IsNull(keywordModelData.TaxonomyId, subject + ".TaxonomyId"); if (hasMetadata) { Assert.IsNotNull(keywordModelData.SchemaId, subject + ".SchemaId"); } else { Assert.IsNull(keywordModelData.SchemaId, subject + ".SchemaId"); } Assert.IsNull(keywordModelData.Metadata, subject + ".Metadata"); }
public void CreatePageModel_KeywordModelExpansion_Success() { Page testPage = (Page)TestSession.GetObject(TestFixture.Tsi2316PageWebDavUrl); RenderedItem testRenderedItem; PageModelData pageModel = CreatePageModel(testPage, out testRenderedItem); RegionModelData mainRegion = GetMainRegion(pageModel); EntityModelData testEntity = mainRegion.Entities[0]; KeywordModelData notPublishedKeyword = (KeywordModelData)testEntity.Content["notPublishedKeyword"]; KeywordModelData publishedKeyword = (KeywordModelData)testEntity.Content["publishedKeyword"]; AssertExpanded(notPublishedKeyword, false, "notPublishedKeyword"); AssertNotExpanded(publishedKeyword, true, "publishedKeyword"); }
public void ContentModelData_SerializeDeserialize_Success() { ContentModelData testContentModel = CreateTestContentModel( "ContentModelData_SerializeDeserialize_Success", includeEntityModels: true, includeKeywordModels: true ); string testTextField = (string)testContentModel["textField"]; string[] testMultiValueTextField = (string[])testContentModel["multiValueTextField"]; RichTextData testRichTextField = (RichTextData)testContentModel["richTextField"]; RichTextData[] testMultiValueRichTextField = (RichTextData[])testContentModel["multiValueRichTextField"]; EntityModelData testCompLinkField = (EntityModelData)testContentModel["compLinkField"]; EntityModelData[] testMultiValueCompLinkField = (EntityModelData[])testContentModel["multiValueCompLinkField"]; KeywordModelData testKeywordField = (KeywordModelData)testContentModel["keywordField"]; KeywordModelData[] testMultiValueKeywordField = (KeywordModelData[])testContentModel["multiValueKeywordField"]; ContentModelData deserializedContentModel = JsonSerializeDeserialize(testContentModel); RichTextData deserializedRichTextField = deserializedContentModel["richTextField"] as RichTextData; RichTextData[] deserializedMultiValueRichTextField = deserializedContentModel["multiValueRichTextField"] as RichTextData[]; EntityModelData deserializedCompLink = deserializedContentModel["compLinkField"] as EntityModelData; EntityModelData[] deserializedMultiValueCompLink = deserializedContentModel["multiValueCompLinkField"] as EntityModelData[]; KeywordModelData deserializedKeyword = deserializedContentModel["keywordField"] as KeywordModelData; KeywordModelData[] deserializedMultiValueKeywordField = (KeywordModelData[])deserializedContentModel["multiValueKeywordField"]; Assert.IsNotNull(deserializedRichTextField, "deserializedRichTextField"); Assert.IsNotNull(deserializedMultiValueRichTextField, "deserializedMultiValueRichTextField"); Assert.IsNotNull(deserializedCompLink, "deserializedCompLink"); Assert.IsNotNull(deserializedMultiValueCompLink, "deserializedMultiValueCompLink"); Assert.IsNotNull(deserializedKeyword, "deserializedKeyword"); Assert.IsNotNull(deserializedMultiValueKeywordField, "deserializedMultiValueKeywordField"); Assert.AreEqual(testTextField, deserializedContentModel["textField"], "textField"); AssertEqualCollections(testMultiValueTextField, deserializedContentModel["multiValueTextField"] as string[], "multiValueTextField"); Assert.AreEqual(testRichTextField.Fragments.Count, deserializedRichTextField.Fragments.Count, "deserializedRichTextField.Fragments.Count"); AssertEqualCollections(testMultiValueRichTextField, deserializedMultiValueRichTextField, "deserializedMultiValueRichTextField"); Assert.AreEqual(testCompLinkField.Id, deserializedCompLink.Id, "deserializedCompLink.Id"); AssertEqualCollections(testMultiValueCompLinkField, deserializedMultiValueCompLink, "deserializedMultiValueCompLink"); Assert.AreEqual(testKeywordField.Id, deserializedKeyword.Id, "deserializedKeyword.Id"); AssertEqualCollections(testMultiValueKeywordField, deserializedMultiValueKeywordField, "deserializedMultiValueKeywordField"); }
public void CreatePageModel_ExampleSiteHomePage_Success() { Page testPage = (Page)TestSession.GetObject(TestFixture.ExampleSiteHomePageWebDavUrl); RenderedItem testRenderedItem; PageModelData pageModel = CreatePageModel(testPage, out testRenderedItem); Assert.AreEqual("Home", pageModel.Title, "pageModel.Title"); Assert.IsNotNull(testRenderedItem, "testRenderedItem"); Assert.AreEqual(5, testRenderedItem.Binaries.Count, "testRenderedItem.Binaries.Count"); Assert.AreEqual(5, testRenderedItem.ChildRenderedItems.Count, "testRenderedItem.ChildRenderedItems.Count"); Assert.IsNotNull(pageModel.Metadata, "pageModel.Metadata"); KeywordModelData sitemapKeyword = (KeywordModelData)pageModel.Metadata["sitemapKeyword"]; AssertNotExpanded(sitemapKeyword, false, "sitemapKeyword"); // Keyword Should not be expanded because Category is publishable // TODO TSI-132: further assertions }
/// <summary> /// Builds a Keyword Data Model from a given CM Keyword object. /// </summary> /// <param name="keywordModelData">The Keyword Data Model to build. Is <c>null</c> for the first Model Builder in the pipeline.</param> /// <param name="keyword">The CM Page.</param> /// <param name="expandLinkDepth">The level of Component/Keyword links to expand.</param> /// <remarks> /// The <paramref name="expandLinkDepth"/> parameter starts at <see cref="DataModelBuilderSettings.ExpandLinkDepth"/>, /// but is decremented for expanded Keyword/Component links (recursively). /// This Model Builder is designed to be the first in the pipeline and hence ignores the <paramref name="keywordModelData"/> input value. /// </remarks> public void BuildKeywordModel(ref KeywordModelData keywordModelData, Keyword keyword, int expandLinkDepth) { Logger.Debug($"BuildKeywordModel({keyword}, {expandLinkDepth})"); // We need Keyword XLinks for Keyword field expansion keyword.Load(LoadFlags.KeywordXlinks); string sequencePrefix; keywordModelData = new KeywordModelData { Id = GetDxaIdentifier(keyword), Title = StripSequencePrefix(keyword.Title, out sequencePrefix), Description = keyword.Description.NullIfEmpty(), Key = keyword.Key.NullIfEmpty(), TaxonomyId = GetDxaIdentifier(keyword.OrganizationalItem), SchemaId = GetDxaIdentifier(keyword.MetadataSchema), Metadata = BuildContentModel(keyword.Metadata, expandLinkDepth) }; }
protected virtual string GetKeywordDisplayText(KeywordModelData keywordModelData) => string.IsNullOrEmpty(keywordModelData.Description) ? keywordModelData.Title : keywordModelData.Description;
private static string GetKeywordDisplayText(KeywordModelData keywordModelData) => string.IsNullOrEmpty(keywordModelData.Description) ? keywordModelData.Title : keywordModelData.Description;