public void GetTermsAsSimpleLinkNavNodeForTermSet_WhenNoChildTerms_ShouldReturnAllFirstLevelTerms() { using (var testScope = SiteTestScope.BlankSite()) { // Arrange var testTermSetInfo = new TermSetInfo(Guid.NewGuid(), "Test Term Set"); var levelOneTermA = new SimpleLinkTermInfo(Guid.NewGuid(), "Term A", testTermSetInfo, "URL-A"); var levelOneTermB = new SimpleLinkTermInfo(Guid.NewGuid(), "Term B", testTermSetInfo, "URL-B"); var levelOneTermC = new SimpleLinkTermInfo(Guid.NewGuid(), "Term C", testTermSetInfo, "URL-C"); var expecteNumberOfTerms = 3; var session = new TaxonomySession(testScope.SiteCollection); var defaultSiteCollectionTermStore = session.DefaultSiteCollectionTermStore; var defaultSiteCollectionGroup = defaultSiteCollectionTermStore.GetSiteCollectionGroup(testScope.SiteCollection); var newTermSet = defaultSiteCollectionGroup.CreateTermSet(testTermSetInfo.Label, testTermSetInfo.Id); var createdTermA = newTermSet.CreateTerm(levelOneTermA.Label, Language.English.Culture.LCID, levelOneTermA.Id); createdTermA.SetLocalCustomProperty(CustomPropertyKey, levelOneTermA.SimpleLinkTarget); var createdTermB = newTermSet.CreateTerm(levelOneTermB.Label, Language.English.Culture.LCID, levelOneTermB.Id); createdTermB.SetLocalCustomProperty(CustomPropertyKey, levelOneTermB.SimpleLinkTarget); var createdTermC = newTermSet.CreateTerm(levelOneTermC.Label, Language.English.Culture.LCID, levelOneTermC.Id); createdTermC.SetLocalCustomProperty(CustomPropertyKey, levelOneTermC.SimpleLinkTarget); defaultSiteCollectionTermStore.CommitAll(); using (var injectionScope = IntegrationTestServiceLocator.BeginLifetimeScope()) { var taxonomyService = injectionScope.Resolve<ITaxonomyService>(); // Act var retrievedTerms = taxonomyService.GetTermsAsSimpleLinkNavNodeForTermSet(testScope.SiteCollection, defaultSiteCollectionGroup.Name, newTermSet.Name); // Assert Assert.IsNotNull(retrievedTerms); Assert.AreEqual(retrievedTerms.Count, expecteNumberOfTerms); Assert.AreEqual(retrievedTerms[0].SimpleLinkTarget, levelOneTermA.SimpleLinkTarget); Assert.AreEqual(retrievedTerms[0].Label, levelOneTermA.Label); Assert.AreEqual(retrievedTerms[0].ChildTerms.Count(), 0); Assert.AreEqual(retrievedTerms[1].SimpleLinkTarget, levelOneTermB.SimpleLinkTarget); Assert.AreEqual(retrievedTerms[1].Label, levelOneTermB.Label); Assert.AreEqual(retrievedTerms[1].ChildTerms.Count(), 0); Assert.AreEqual(retrievedTerms[2].SimpleLinkTarget, levelOneTermC.SimpleLinkTarget); Assert.AreEqual(retrievedTerms[2].Label, levelOneTermC.Label); Assert.AreEqual(retrievedTerms[2].ChildTerms.Count(), 0); } // Cleanup term set so that we don't pollute the metadata store newTermSet.Delete(); defaultSiteCollectionTermStore.CommitAll(); } }
public void GetTermsAsSimpleLinkNavNodeForTermSet_WithChildTermsAndCustomSortOrder_ShouldKeepTheTermsOrder() { using (var testScope = SiteTestScope.BlankSite()) { var guidTermA = Guid.NewGuid(); var guidTermB = Guid.NewGuid(); var guidTermAA = Guid.NewGuid(); var guidTermAB = Guid.NewGuid(); // Arrange var testTermSetInfo = new TermSetInfo(Guid.NewGuid(), "Test Term Set"); var levelOneTermA = new SimpleLinkTermInfo(guidTermA, "Term A", testTermSetInfo, "URL-A"); var levelOneTermB = new SimpleLinkTermInfo(guidTermB, "Term B", testTermSetInfo); var levelTwoTermAA = new SimpleLinkTermInfo(guidTermAA, "Term AA", testTermSetInfo); var levelTwoTermAB = new SimpleLinkTermInfo(guidTermAB, "Term AB", testTermSetInfo, "URL-AB"); var levelTwoTermBA = new SimpleLinkTermInfo(Guid.NewGuid(), "Term BA", testTermSetInfo, "URL-BA"); var expecteNumberOfLevelOneTerms = 2; var expectedTotalNumberOfTerms = 5; var session = new TaxonomySession(testScope.SiteCollection); var defaultSiteCollectionTermStore = session.DefaultSiteCollectionTermStore; var defaultSiteCollectionGroup = defaultSiteCollectionTermStore.GetSiteCollectionGroup(testScope.SiteCollection); var newTermSet = defaultSiteCollectionGroup.CreateTermSet(testTermSetInfo.Label, testTermSetInfo.Id); var createdTermA = newTermSet.CreateTerm(levelOneTermA.Label, Language.English.Culture.LCID, levelOneTermA.Id); createdTermA.SetLocalCustomProperty(CustomPropertyKey, levelOneTermA.SimpleLinkTarget); var createdTermAA = createdTermA.CreateTerm(levelTwoTermAA.Label, Language.English.Culture.LCID, levelTwoTermAA.Id); var createdTermAB = createdTermA.CreateTerm(levelTwoTermAB.Label, Language.English.Culture.LCID, levelTwoTermAB.Id); createdTermAB.SetLocalCustomProperty(CustomPropertyKey, levelTwoTermAB.SimpleLinkTarget); var createdTermB = newTermSet.CreateTerm(levelOneTermB.Label, Language.English.Culture.LCID, levelOneTermB.Id); var createdTermBA = createdTermB.CreateTerm(levelTwoTermBA.Label, Language.English.Culture.LCID, levelTwoTermBA.Id); createdTermBA.SetLocalCustomProperty(CustomPropertyKey, levelTwoTermBA.SimpleLinkTarget); // Create a custom sort order where term B is first, term A is second newTermSet.CustomSortOrder = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", guidTermB, guidTermA); // Create a custom sort order where term AB is first, term AA is second createdTermA.CustomSortOrder = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", guidTermAB, guidTermAA); defaultSiteCollectionTermStore.CommitAll(); using (var injectionScope = IntegrationTestServiceLocator.BeginLifetimeScope()) { var taxonomyService = injectionScope.Resolve<ITaxonomyService>(); // Act var retrievedTerms = taxonomyService.GetTermsAsSimpleLinkNavNodeForTermSet(testScope.SiteCollection, defaultSiteCollectionGroup.Name, newTermSet.Name); // Assert Assert.IsNotNull(retrievedTerms); Assert.AreEqual(retrievedTerms.Count, expecteNumberOfLevelOneTerms); var actualTotalNumberOfTermsRetrieved = retrievedTerms.Count + retrievedTerms[0].ChildTerms.Count() + retrievedTerms[1].ChildTerms.Count(); Assert.AreEqual(actualTotalNumberOfTermsRetrieved, expectedTotalNumberOfTerms); Assert.AreEqual(retrievedTerms[0].SimpleLinkTarget, levelOneTermB.SimpleLinkTarget); Assert.AreEqual(retrievedTerms[0].Label, levelOneTermB.Label); Assert.AreEqual(retrievedTerms[0].ChildTerms.Count(), 1); Assert.AreEqual(retrievedTerms[1].SimpleLinkTarget, levelOneTermA.SimpleLinkTarget); Assert.AreEqual(retrievedTerms[1].Label, levelOneTermA.Label); Assert.AreEqual(retrievedTerms[1].ChildTerms.Count(), 2); var actualLevelTwoAATerm = retrievedTerms[1].ChildTerms.ElementAt(1); var actualLevelTwoABTerm = retrievedTerms[1].ChildTerms.ElementAt(0); var actualLevelTwoBATerm = retrievedTerms[0].ChildTerms.ElementAt(0); Assert.AreEqual(actualLevelTwoAATerm.SimpleLinkTarget, levelTwoTermAA.SimpleLinkTarget); Assert.AreEqual(actualLevelTwoAATerm.Label, levelTwoTermAA.Label); Assert.AreEqual(actualLevelTwoAATerm.ChildTerms.Count(), 0); Assert.AreEqual(actualLevelTwoABTerm.SimpleLinkTarget, levelTwoTermAB.SimpleLinkTarget); Assert.AreEqual(actualLevelTwoABTerm.Label, levelTwoTermAB.Label); Assert.AreEqual(actualLevelTwoABTerm.ChildTerms.Count(), 0); Assert.AreEqual(actualLevelTwoBATerm.SimpleLinkTarget, levelTwoTermBA.SimpleLinkTarget); Assert.AreEqual(actualLevelTwoBATerm.Label, levelTwoTermBA.Label); Assert.AreEqual(actualLevelTwoBATerm.ChildTerms.Count(), 0); } // Cleanup term set so that we don't pollute the metadata store newTermSet.Delete(); defaultSiteCollectionTermStore.CommitAll(); } }