コード例 #1
0
        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");
        }
コード例 #2
0
        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");
        }
コード例 #3
0
        public void KeywordModelData_SerializeDeserialize_Success()
        {
            KeywordModelData testKeywordModel = CreateTestKeywordModel("KeywordModelData_SerializeDeserialize_Success");

            KeywordModelData deserializedKeywordModel = JsonSerializeDeserialize(testKeywordModel);

            AssertEqualKeywordModels(testKeywordModel, deserializedKeywordModel, "deserializedKeywordModel");
        }
コード例 #4
0
        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));
        }
コード例 #5
0
 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");
 }
コード例 #6
0
        /// <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
            });
        }
コード例 #8
0
 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");
 }
コード例 #9
0
        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");
        }
コード例 #10
0
        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");
        }
コード例 #11
0
        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
        }
コード例 #12
0
        /// <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)
            };
        }
コード例 #13
0
 protected virtual string GetKeywordDisplayText(KeywordModelData keywordModelData)
 => string.IsNullOrEmpty(keywordModelData.Description) ? keywordModelData.Title : keywordModelData.Description;
コード例 #14
0
 private static string GetKeywordDisplayText(KeywordModelData keywordModelData)
 => string.IsNullOrEmpty(keywordModelData.Description) ? keywordModelData.Title : keywordModelData.Description;