public void GetVersions_IncludesPublishedVersion_WhenItsTheOnlyVersion()
        {
            PersistableItem item = CreateOneItem <PersistableItem>(0, "item", null);

            persister.Save(item);

            var versions = versioner.GetVersionsOf(item).ToList();

            Assert.That(versions.Count, Is.EqualTo(1));
        }
Exemple #2
0
        public void AncestralTrail_ContainsParentTrail_OnChildPage()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);
            PersistableItem item = CreateOneItem <PersistableItem>(0, "item", root);

            persister.Save(root);
            persister.Save(item);

            Assert.That(item.AncestralTrail, Is.EqualTo("/" + root.ID + "/"));
        }
Exemple #3
0
        public void SavingVersion_CanGiveNewVersion_GreaterIndex()
        {
            PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(master);

            var version1 = versioner.AddVersion(master, asPreviousVersion: false);

            version1.VersionIndex.ShouldBe(1);
            master.VersionIndex.ShouldBe(0);
        }
Exemple #4
0
        public void AddingVersion_OfUnpublishedItem_SetsStateOfVersion_AccordingTo_PreviousOrNot(bool isPrevious, ContentState expectedState)
        {
            PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);

            master.State = ContentState.Unpublished;
            persister.Save(master);

            var version1 = versioner.AddVersion(master, asPreviousVersion: isPrevious);

            version1.State.ShouldBe(expectedState);
        }
Exemple #5
0
        public void AddingVersion_OfDraftItem_SetsStateToDraft(bool isPrevious)
        {
            PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);

            master.State = ContentState.Draft;
            persister.Save(master);

            var version1 = versioner.AddVersion(master, asPreviousVersion: isPrevious);

            version1.State.ShouldBe(ContentState.Draft);
        }
Exemple #6
0
        public void CreatingVersion_IncreasesVersionIndex()
        {
            PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(master);

            var version1 = versioner.AddVersion(master);

            master.VersionIndex.ShouldBe(1);
            version1.VersionIndex.ShouldBe(0);
        }
Exemple #7
0
        public void AncestralTrail_IsUpdated_WhenItem_IsMoved()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);
            PersistableItem one  = CreateOneItem <PersistableItem>(0, "one", root);
            PersistableItem two  = CreateOneItem <PersistableItem>(0, "two", root);

            persister.Repository.SaveOrUpdate(root, one, two);

            persister.Move(two, one);

            Assert.That(two.AncestralTrail, Is.EqualTo("/" + root.ID + "/" + one.ID + "/"));
        }
Exemple #8
0
        public virtual void CanDropDatabaseSchema()
        {
            CreateDatabaseSchema();
            DropDatabaseSchema();

            PersistableItem testItem = new PersistableItem();

            ExceptionAssert.Throws <Exception>(
                delegate
            {
                engine.Persister.Save(testItem);
            });
        }
Exemple #9
0
        public void ReplacingVersions_IncreasesVersionIndex()
        {
            PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(master);

            var version1 = versioner.AddVersion(master);

            var version2 = versioner.ReplaceVersion(master, version1, storeCurrentVersion: true);

            version1.VersionIndex.ShouldBe(0);
            version2.VersionIndex.ShouldBe(1);
            master.VersionIndex.ShouldBe(2);
        }
Exemple #10
0
        public void Save_WithChildren_ChildState()
        {
            var parent = new PersistableItem();

            persister.Save(parent);

            var child = new PersistableItem {
                Parent = parent
            };

            persister.Save(child);

            parent.ChildState.ShouldBe(CollectionState.ContainsVisiblePublicPages);
        }
Exemple #11
0
        public void CanSave_ReadOnlyGuid()
        {
            PersistableItem item   = CreateOneItem <PersistableItem>(0, "root", null);
            PersistableItem fromDB = null;
            string          guid   = item.ReadOnlyGuid;

            using (persister)
            {
                persister.Save(item);
            }

            fromDB = persister.Get <PersistableItem>(item.ID);

            Assert.That(fromDB.ReadOnlyGuid, Is.EqualTo(guid));
        }
Exemple #12
0
        public void CanSave_Guid()
        {
            PersistableItem item   = CreateOneItem <PersistableItem>(0, "root", null);
            PersistableItem fromDB = null;

            item.GuidProperty = Guid.NewGuid();
            using (persister)
            {
                persister.Save(item);
            }

            fromDB = persister.Get <PersistableItem>(item.ID);

            Assert.That(fromDB.GuidProperty, Is.EqualTo(item.GuidProperty));
        }
Exemple #13
0
        public void AncestralTrail_IsUpdated_WhenUsing_VersioningManager()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);
            PersistableItem one  = CreateOneItem <PersistableItem>(0, "one", root);

            persister.Repository.SaveOrUpdate(root, one);

            VersionManager vm      = new VersionManager(TestSupport.CreateVersionRepository(typeof(PersistableItem)), persister.Repository, new N2.Edit.Workflow.StateChanger(), new N2.Configuration.EditSection());
            var            version = vm.AddVersion(one);

            one.Name += "2";
            persister.Save(one);

            Assert.That(version.AncestralTrail, Is.EqualTo("/"));
            Assert.That(one.AncestralTrail, Is.EqualTo("/" + root.ID + "/"));
        }
Exemple #14
0
        public void SavingVersion_IncludesParts()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart>(0, "part", root);

            part.ZoneName = "TheZone";
            persister.Save(part);

            var version1 = versioner.AddVersion(root, asPreviousVersion: false);

            var versionPart = version1.Children.Single();

            versionPart.Title.ShouldBe("part");
            versionPart.VersionOf.ID.ShouldBe(part.ID);
        }
Exemple #15
0
        public void IncludedParts_InheritStateFromPage()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart>(0, "part", root);

            part.ZoneName = "TheZone";
            persister.Save(part);

            root.State = ContentState.Draft;
            var version1 = versioner.AddVersion(root, asPreviousVersion: false);

            var versionPart = version1.Children.Single();

            versionPart.State.ShouldBe(ContentState.Draft);
        }
        public override void SetUp()
        {
            base.SetUp();

            var definitions = TestSupport.SetupDefinitions(typeof(PersistableItem), typeof(PersistableItem2), typeof(PersistablePart));

            accessor     = new LuceneAccesor(new ThreadContext(), new DatabaseSection());
            indexer      = new ContentIndexer(new LuceneIndexer(accessor), new TextExtractor(new IndexableDefinitionExtractor(definitions)));
            searcher     = new LuceneContentSearcher(accessor, persister);
            worker       = new AsyncWorker();
            asyncIndexer = new AsyncIndexer(indexer, persister, worker, Rhino.Mocks.MockRepository.GenerateStub <IErrorNotifier>(), new DatabaseSection());
            tracker      = new ContentChangeTracker(asyncIndexer, persister, new N2.Plugin.ConnectionMonitor(), new DatabaseSection());

            accessor.LockTimeout = 1L;
            indexer.Clear();
            root = CreateOneItem <PersistableItem>(1, "The Root Page", null);
        }
Exemple #17
0
        public void Save_WithChildren_DoubleSave()
        {
            var parent = new PersistableItem();

            persister.Save(parent);

            var child = new PersistableItem {
                Parent = parent
            };

            persister.Save(child);

            parent.Children.Count.ShouldBe(1);

            persister.Save(parent);

            parent.Children.Count.ShouldBe(1);
        }
Exemple #18
0
        public void Replacing_MasterVersion_WithDraft_RemovesDraftVersion()
        {
            PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);

            master.State = ContentState.Published;
            persister.Save(master);

            var version1 = versioner.AddVersion(master, asPreviousVersion: false);

            version1.Title += " changes";
            var version2 = versioner.ReplaceVersion(master, version1, storeCurrentVersion: true);

            version2.VersionIndex.ShouldBe(0);
            version2.Title.ShouldBe("root");
            master.VersionIndex.ShouldBe(1);
            master.Title.ShouldBe("root changes");
            versioner.GetVersionsOf(master).Count().ShouldBe(2);
        }
Exemple #19
0
        public void AddingVersionOfPart_AddsVersionOfPage_AndReturnsPart()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart>(0, "part", root);

            part.ZoneName = "TheZone";
            part.AddTo(root);
            persister.Save(part);

            var draft = versioner.AddVersion(part, asPreviousVersion: false);

            draft.Name.ShouldBe("part");
            draft.ID.ShouldBe(0);
            part.Parent.Name.ShouldBe("root");
            draft.Parent.ID.ShouldBe(0);
        }
Exemple #20
0
        //[TestCase(10)]
        //[TestCase(100)]
        //[TestCase(1000)]
        //[TestCase(10000)]
        public void Save_ManyAssociations_InSession(int iterations)
        {
            for (int i = 0; i < iterations; i++)
            {
                var parent = new PersistableItem();
                persister.Save(parent);

                var child1 = new PersistableItem {
                    Parent = parent
                };
                child1["parent"] = parent;
                persister.Save(child1);

                var child1_1 = new PersistableItem {
                    Parent = child1
                };
                child1_1["parent"] = child1_1;
                persister.Save(child1_1);

                var child2 = new PersistableItem {
                    Parent = parent
                };
                child2["sibling"] = child1;
                persister.Save(child2);

                var child2_1 = new PersistableItem {
                    Parent = child2
                };
                child2_1["cousin"] = child1_1;
                persister.Save(child2_1);

                child1["child"]   = child1_1;
                child1["sibling"] = child2;
                persister.Save(child1);

                child1_1["cousin"] = child2_1;
                persister.Save(child1_1);

                child2["child"] = child2_1;
                persister.Save(child2);

                Find.EnumerateChildren(parent).Count().ShouldBe(4);
            }
        }
Exemple #21
0
        public void CanGet_LatestVersion_Only()
        {
            PersistableItem item = CreateOneItem <PersistableItem>(0, "item", null);

            using (new TimeCapsule(DateTime.Now.AddSeconds(-10)))
            {
                persister.Save(item);
            }

            ContentItem version = versioner.AddVersion(item);

            item.VersionIndex++;
            persister.Save(item);

            var versions = versioner.GetVersionsOf(item, 0, 1);

            Assert.That(versions.Count, Is.EqualTo(1));
            Assert.That(versions[0], Is.EqualTo(item));
        }
Exemple #22
0
        public void PublishingDraft_UpdatesParts()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart>(0, "part", root);

            part.ZoneName = "TheZone";
            part.AddTo(root);
            persister.Save(part);

            var draft = versioner.AddVersion(root, asPreviousVersion: false);

            draft.Children.Single().Title += " modified";

            var master = versioner.MakeMasterVersion(draft);

            master.Children.Single().Title.ShouldBe("part modified");
        }
Exemple #23
0
        private void CreateRootItem()
        {
            rootItem                  = CreateOneItem <PersistableItem>(0, "root", null);
            rootItem.Created          = new DateTime(2007, 06, 01);
            rootItem.Published        = new DateTime(2007, 06, 02);
            rootItem.Expires          = new DateTime(2017, 06, 02);
            rootItem.ZoneName         = "ZaZone";
            rootItem.SortOrder        = 12;
            rootItem.Visible          = true;
            rootItem.State            = ContentState.Published;
            rootItem["IntDetail"]     = 32;
            rootItem["DoubleDetail"]  = 32.22;
            rootItem["BoolDetail"]    = true;
            rootItem["DateDetail"]    = new DateTime(1998, 12, 31);
            rootItem["StringDetail"]  = "a string in a version";
            rootItem["StringDetail2"] = "just a string";
            rootItem["ObjectDetail"]  = new string[] { "zero", "one", "two" };

            engine.Persister.Save(rootItem);
        }
Exemple #24
0
        public void GetVersions_DisplaysVersions_InInverseVersionIndexOrder()
        {
            PersistableItem item = CreateOneItem <PersistableItem>(0, "item", null);

            using (new TimeCapsule(DateTime.Now.AddSeconds(-10)))
            {
                persister.Save(item);
            }

            ContentItem version = versioner.AddVersion(item);

            item.VersionIndex++;
            persister.Save(item);

            var versions = versioner.GetVersionsOf(item);

            Assert.That(versions.Count, Is.EqualTo(2));
            Assert.That(versions[0], Is.EqualTo(item));
            Assert.That(versions[1], Is.EqualTo(version));
        }
Exemple #25
0
        public void PublishingDraft_RemovesRemovedParts()
        {
            PersistableItem root = CreateOneItem <PersistableItem>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart>(0, "part", root);

            part.ZoneName = "TheZone";
            part.AddTo(root);
            persister.Save(part);

            var draft = versioner.AddVersion(root, asPreviousVersion: false);

            draft.Children.Clear();

            var master = versioner.MakeMasterVersion(draft);

            master.Children.Count.ShouldBe(0);
            persister.Get(part.ID).ShouldBe(null);
        }
        public void AddDraftVersion_Master_ShouldNotBeAffected()
        {
            var now = DateTime.Now;

            using (N2.Utility.TimeCapsule(now.AddMinutes(-1)))
            {
                PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);
                persister.Save(master);

                using (N2.Utility.TimeCapsule(now))
                {
                    versioner.AddVersion(master, asPreviousVersion: false);
                }

                var versions   = versioner.GetVersionsOf(master).ToList();
                var masterInfo = versions[1];
                masterInfo.Published.ShouldBe(now.AddMinutes(-1));
                masterInfo.Expires.ShouldBe(null);
            }
        }
        public void AddPreviousVersion_MasterShouldKeep_OriginalPublishedExpiration()
        {
            var now = DateTime.Now;

            using (N2.Utility.TimeCapsule(now.AddMinutes(-1)))
            {
                PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);
                persister.Save(master);

                using (N2.Utility.TimeCapsule(now))
                {
                    versioner.AddVersion(master, asPreviousVersion: true);
                }

                var versions   = versioner.GetVersionsOf(master).ToList();
                var masterInfo = versions[0];
                masterInfo.Published.ShouldBe(now.AddMinutes(-1));
                masterInfo.Expires.ShouldBe(null);
            }
        }
        public void AddSinglePreviousVersion_VersionShouldBorrow_PublishedFromMaster_AndExpiresFromCurrentTime()
        {
            var now = DateTime.Now;

            using (N2.Utility.TimeCapsule(now.AddMinutes(-1)))
            {
                PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);
                persister.Save(master);

                using (N2.Utility.TimeCapsule(now))
                {
                    versioner.AddVersion(master, asPreviousVersion: true);
                }

                var versions        = versioner.GetVersionsOf(master).ToList();
                var previousVersion = versions[1];
                previousVersion.Published.ShouldBe(now.AddMinutes(-1));
                previousVersion.Expires.ShouldBe(now);
            }
        }
        public void AddDraftVersion_VersionShouldHave_NoPublishedDate()
        {
            var now = DateTime.Now;

            using (N2.Utility.TimeCapsule(now.AddMinutes(-1)))
            {
                PersistableItem master = CreateOneItem <PersistableItem>(0, "root", null);
                persister.Save(master);

                using (N2.Utility.TimeCapsule(now))
                {
                    versioner.AddVersion(master, asPreviousVersion: false);
                }

                var versions = versioner.GetVersionsOf(master).ToList();
                var draft    = versions[0];
                draft.Published.ShouldBe(null);
                draft.Expires.ShouldBe(null);
            }
        }
Exemple #30
0
        public void AncestralTrail_IsUpdated_OnChildren_OfMovedItems()
        {
            //  root
            //      one
            //      two
            //          three
            PersistableItem root  = CreateOneItem <PersistableItem>(0, "root", null);
            PersistableItem one   = CreateOneItem <PersistableItem>(0, "one", root);
            PersistableItem two   = CreateOneItem <PersistableItem>(0, "two", root);
            PersistableItem three = CreateOneItem <PersistableItem>(0, "three", two);

            persister.Repository.SaveOrUpdate(root, one, two, three);

            //  root
            //      one
            //          two (moved)
            //              three (moved child)
            persister.Move(two, one);

            Assert.That(three.AncestralTrail, Is.EqualTo("/" + root.ID + "/" + one.ID + "/" + two.ID + "/"));
        }