public void Categories_VerifyAllTaxaIsRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.All;
            model.ShowEmptyTaxa = true;

            var viewModel = model.CreateViewModel();

            Assert.AreEqual(this.taxaNamesWithParents.Count, viewModel.Taxa.Count);

            for (int i = 0; i < viewModel.Taxa.Count; i++)
            {
                string parentName;
                string taxonName;
                this.GetTaxonNameAndParentName(this.taxaNamesWithParents[i], out parentName, out taxonName);

                var actual = viewModel.Taxa[i];

                Assert.AreEqual(taxonName, actual.Title);
            }
        }
        public void Categories_VerifyEmptyTaxaIsNotRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.All;

            var viewModel = model.CreateViewModel();

            var expectedFilteredTaxa = new List<string>() { "c1", "c3", "c3|c3c2c1" };

            Assert.AreEqual(expectedFilteredTaxa.Count, viewModel.Taxa.Count);

            for (var i = 0; i < expectedFilteredTaxa.Count; i++)
            {
                var actual = viewModel.Taxa[i];

                var expectedTaxon = expectedFilteredTaxa[i];

                string taxonParentName;
                string taxonName;
                this.GetTaxonNameAndParentName(expectedTaxon, out taxonParentName, out taxonName);

                Assert.AreEqual(taxonName, actual.Title);
            }
        }
        public void Categories_VerifyHierarchicalTaxaFilteredByContentTypeIsRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.UsedByContentType;
            model.ContentTypeName = typeof(NewsItem).FullName;
            model.FlattenHierarchy = false;

            var viewModel = model.CreateViewModel();

            var expectedTaxaTree = this.GetExpectedTaxaTree(new List<string>() { "c1", "c3", "c3|c3c2c1" });

            foreach (var taxon in expectedTaxaTree)
            {
                this.AssertTaxonIsInPlace(viewModel.Taxa, taxon);
            }
        }
        public void Categories_VerifyTopLevelTaxaIsRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.TopLevel;
            model.ShowEmptyTaxa = true;

            var viewModel = model.CreateViewModel();

            var topLevelNames = this.taxaNamesWithParents.Where(tn => !tn.Contains('|')).ToList();

            Assert.AreEqual(topLevelNames.Count, viewModel.Taxa.Count);

            for (int i = 0; i < viewModel.Taxa.Count; i++)
            {
                var expected = topLevelNames[i];
                var actual = viewModel.Taxa[i];

                Assert.AreEqual(expected, actual.Title);
            }
        }
        public void Categories_VerifyTaxaUnderParticularParentIsRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.UnderParticularTaxon;
            model.ShowEmptyTaxa = true;

            var rootTaxon = TaxonomyManager.GetManager().GetTaxa<HierarchicalTaxon>().FirstOrDefault(t => t.Title == "c3");
            model.RootTaxonId = rootTaxon.Id;

            var viewModel = model.CreateViewModel();

            var innerLevelNames = this.taxaNamesWithParents
                .Where(tn => tn.Contains("c3|"))
                .Select(tn => tn.Split('|')[1])
                .ToList();

            Assert.AreEqual(innerLevelNames.Count, viewModel.Taxa.Count);

            for (int i = 0; i < viewModel.Taxa.Count; i++)
            {
                var expected = innerLevelNames[i];
                var actual = viewModel.Taxa[i];

                Assert.AreEqual(expected, actual.Title);
            }
        }
        public void Categories_VerifyTaxaFromContentItemIsRetrieved()
        {
            var item = NewsManager.GetManager().GetNewsItems().FirstOrDefault();

            var model = new HierarchicalTaxonomyModel();
            model.ContentId = item.Id;

            var viewModel = model.CreateViewModel();

            var itemTaxa = (IList<Guid>)item.GetValue("Category");

            Assert.AreEqual(itemTaxa.Count, viewModel.Taxa.Count);

            var taxonomyManager = TaxonomyManager.GetManager();
            for (var i = 0; i < itemTaxa.Count; i++)
            {
                var taxon = taxonomyManager.GetTaxa<HierarchicalTaxon>().FirstOrDefault(t => t.Id == itemTaxa[i]);
                Assert.AreEqual(taxon.Title.ToString(), viewModel.Taxa[i].Title);
            }
        }
        public void Categories_VerifySpecificTaxaIsRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.Selected;
            model.ShowEmptyTaxa = true;

            var selectedTaxaIds = TaxonomyManager.GetManager()
                .GetTaxa<HierarchicalTaxon>()
                .Where(t => this.taxaNamesWithParents[1] == t.Title.ToString() || this.taxaNamesWithParents[2] == t.Title.ToString())
                .Select(t => t.Id);

            var serializer = new JavaScriptSerializer();
            model.SerializedSelectedTaxaIds = serializer.Serialize(selectedTaxaIds);

            var viewModel = model.CreateViewModel();

            Assert.AreEqual(2, viewModel.Taxa.Count);

            for (int i = 0; i < viewModel.Taxa.Count; i++)
            {
                var expected = this.taxaNamesWithParents[i + 1];
                var actual = viewModel.Taxa[i];

                Assert.AreEqual(expected, actual.Title);
            }
        }
        public void Categories_VerifyHierarchicalTaxaIsRetrieved()
        {
            var model = new HierarchicalTaxonomyModel();
            model.TaxaToDisplay = HierarchicalTaxaToDisplay.TopLevel;
            model.ShowEmptyTaxa = true;
            model.FlattenHierarchy = false;

            var viewModel = model.CreateViewModel();

            var expectedTaxaTree = this.GetExpectedTaxaTree(this.taxaNamesWithParents);

            foreach (var taxon in expectedTaxaTree)
            {
                this.AssertTaxonIsInPlace(viewModel.Taxa, taxon);
            }
        }