public void DetailCollection_MovesToNextVersion_WhenReplacing()
        {
            // Create item to link in original version
            PersistableItem1 link1 = CreateOneItem <PersistableItem1>(0, "link1", null);

            persister.Save(link1);

            // Create item to link in new version
            PersistableItem1 link2 = CreateOneItem <PersistableItem1>(0, "link2", null);

            persister.Save(link2);

            PersistableItem1 master = CreateOneItem <PersistableItem1>(0, "root", null);

            master.ContentLinks = new[] { link1 };
            persister.Save(master);

            PersistableItem1 version1 = (PersistableItem1)versioner.AddVersion(master);

            master.ContentLinks = new[] { link2 };
            persister.Save(master);

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

            PersistableItem1 restoredItem = (PersistableItem1)persister.Get(master.ID);

            CollectionAssert.AreEqual(new[] { link1 }, restoredItem.ContentLinks);

            PersistableItem1 versionItem = (PersistableItem1)versioner.GetVersion(master, version2.VersionIndex);

            // persister.Get(version2.ID);
            CollectionAssert.AreEqual(new[] { link2 }, versionItem.ContentLinks);
        }
        public void PublishingDraft_CreatesNewParts_BelowExistingParts()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);

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

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

            var draft     = versioner.AddVersion(root, asPreviousVersion: false);
            var draftPart = CreateOneItem <PersistablePart1>(0, "new part", null);

            draftPart.ZoneName = "TheZone";
            draftPart.AddTo(draft.Children.Single());

            var master = versioner.MakeMasterVersion(draft);

            var addedChild = master.Children.Single().Children.Single();

            addedChild.State.ShouldBe(ContentState.Published);
            addedChild.ID.ShouldNotBe(0);
            addedChild.VersionOf.HasValue.ShouldBe(false);
            addedChild.Title.ShouldBe("new part");
        }
        public void PublishingDraft_ZoneName_And_SortOrder_IsUpdatedFromDraft()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);

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

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

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

            draftChild.ZoneName  = "TheOtherZone";
            draftChild.SortOrder = 666;

            var master = versioner.MakeMasterVersion(draft);

            var updatedPart = master.Children.Single();

            updatedPart.ZoneName.ShouldBe("TheOtherZone");
            updatedPart.SortOrder.ShouldBe(666);
        }
        public void PublishingDraft_RemovesRemovedParts_InHierarchy()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);

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

            part.ZoneName = "TheZone";
            part.AddTo(root);
            persister.Save(part);
            var part2 = CreateOneItem <PersistablePart1>(0, "part", part);

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

            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);
            persister.Get(part2.ID).ShouldBe(null);
        }
Beispiel #5
0
        public void Save_WithDescendants()
        {
            var parent = new PersistableItem1();

            persister.Save(parent);

            var child1 = new PersistableItem1 {
                Parent = parent
            };

            persister.Save(child1);

            var child1_1 = new PersistableItem1 {
                Parent = child1
            };

            persister.Save(child1_1);

            var child2 = new PersistableItem1 {
                Parent = parent
            };

            persister.Save(child2);

            var child2_1 = new PersistableItem1 {
                Parent = child2
            };

            persister.Save(child2_1);

            persister.Save(parent);

            Find.EnumerateChildren(parent).Count().ShouldBe(4);
        }
Beispiel #6
0
        public void Laziness()
        {
            ContentItem root  = CreateOneItem <PersistableItem1>(0, "root", null);
            ContentItem root2 = CreateOneItem <PersistableItem1>(0, "root2", null);

            for (int i = 0; i < 30; i++)
            {
                PersistableItem1 item = CreateOneItem <PersistableItem1>(0, "item", root);
            }
            using (persister)
            {
                persister.Save(root);
                persister.Save(root2);
            }
            using (persister)
            {
                root = persister.Get(root.ID);
                Debug.WriteLine("Got: " + root + " with Children.Count: " + root.Children.Count);
                foreach (var child in root.Children)
                {
                }
                root2 = persister.Get(root2.ID);
                Debug.WriteLine("Got: " + root2 + " with Children.Count: " + root2.Children.Count);
                foreach (var child in root2.Children)
                {
                }
            }
        }
Beispiel #7
0
        public void Save_ChildState()
        {
            var item = new PersistableItem1();

            persister.Save(item);
            item.ChildState.ShouldBe(CollectionState.IsEmpty);
        }
Beispiel #8
0
        public void AncestralTrail_IsSlash_OnRootPage()
        {
            PersistableItem1 item = CreateOneItem <PersistableItem1>(0, "root", null);

            persister.Save(item);

            Assert.That(item.AncestralTrail, Is.EqualTo("/"));
        }
        public void GetGreatestVersionIndex_WhenNoVersions()
        {
            PersistableItem1 master = CreateOneItem <PersistableItem1>(0, "root", null);

            persister.Save(master);

            versioner.Repository.GetGreatestVersionIndex(master).ShouldBe(0);
        }
Beispiel #10
0
        public virtual void CanCreateDatabaseSchema()
        {
            CreateDatabaseSchema();
            PersistableItem1 testItem = new PersistableItem1();

            engine.Persister.Save(testItem);
            Assert.AreEqual(1, testItem.ID);
        }
Beispiel #11
0
        public void AncestralTrail_ContainsParentTrail_OnChildPage_WhenSavedByCascade()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);
            PersistableItem1 item = CreateOneItem <PersistableItem1>(0, "item", root);

            persister.Save(root);

            Assert.That(item.AncestralTrail, Is.EqualTo("/" + root.ID + "/"));
        }
Beispiel #12
0
        public override void SetUp()
        {
            base.SetUp();

            accessor = new LuceneAccesor(new ThreadContext(), new DatabaseSection());
            indexer  = new LuceneIndexer(accessor, new TextExtractor(new IndexableDefinitionExtractor(definitions)));
            root     = CreateOneItem <PersistableItem1>(1, "The Root Page", null);
            indexer.Clear();
        }
        public void GetVersions_IncludesPublishedVersion_WhenItsTheOnlyVersion()
        {
            PersistableItem1 item = CreateOneItem <PersistableItem1>(0, "item", null);

            persister.Save(item);

            var versions = versioner.GetVersionsOf(item);

            Assert.That(versions.Count, Is.EqualTo(1));
        }
        public void AddingVersion_OfDraftItem_SetsStateToDraft(bool isPrevious)
        {
            PersistableItem1 master = CreateOneItem <PersistableItem1>(0, "root", null);

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

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

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

            persister.Save(master);

            var version1 = versioner.AddVersion(master);

            master.VersionIndex.ShouldBe(1);
            version1.VersionIndex.ShouldBe(0);
        }
        public void SavingVersion_CanGiveNewVersion_GreaterIndex()
        {
            PersistableItem1 master = CreateOneItem <PersistableItem1>(0, "root", null);

            persister.Save(master);

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

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

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

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

            version1.State.ShouldBe(expectedState);
        }
Beispiel #18
0
        public void AncestralTrail_IsUpdated_WhenItem_IsMoved()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);
            PersistableItem1 one  = CreateOneItem <PersistableItem1>(0, "one", root);
            PersistableItem1 two  = CreateOneItem <PersistableItem1>(0, "two", root);

            persister.Save(root);

            persister.Move(two, one);

            Assert.That(two.AncestralTrail, Is.EqualTo("/" + root.ID + "/" + one.ID + "/"));
        }
Beispiel #19
0
        public void AncestralTrail_IsUpdated_WhenItem_IsCopied()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);
            PersistableItem1 one  = CreateOneItem <PersistableItem1>(0, "one", root);
            PersistableItem1 two  = CreateOneItem <PersistableItem1>(0, "two", root);

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

            ContentItem copiedItem = persister.Copy(two, one);

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

            PersistableItem1 testItem = new PersistableItem1();

            ExceptionAssert.Throws <Exception>(
                delegate
            {
                engine.Persister.Save(testItem);
            });
        }
        public void ReplacingVersions_IncreasesVersionIndex()
        {
            PersistableItem1 master = CreateOneItem <PersistableItem1>(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);
        }
Beispiel #22
0
        public void Save_WithChildren_ChildState()
        {
            var parent = new PersistableItem1();

            persister.Save(parent);

            var child = new PersistableItem1 {
                Parent = parent
            };

            persister.Save(child);

            parent.ChildState.ShouldBe(CollectionState.ContainsVisiblePublicPages);
        }
Beispiel #23
0
        public void CanSave_Guid()
        {
            PersistableItem1 item   = CreateOneItem <PersistableItem1>(0, "root", null);
            PersistableItem1 fromDB = null;

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

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

            Assert.That(fromDB.GuidProperty, Is.EqualTo(item.GuidProperty));
        }
Beispiel #24
0
        public void CanSave_ReadOnlyGuid()
        {
            PersistableItem1 item   = CreateOneItem <PersistableItem1>(0, "root", null);
            PersistableItem1 fromDB = null;
            string           guid   = item.ReadOnlyGuid;

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

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

            Assert.That(fromDB.ReadOnlyGuid, Is.EqualTo(guid));
        }
Beispiel #25
0
        public void AncestralTrail_IsUpdated_WhenUsing_VersioningManager()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);
            PersistableItem1 one  = CreateOneItem <PersistableItem1>(0, "one", root);

            persister.Save(root);

            N2.Persistence.VersionManager vm = new VersionManager(persister.Repository, finder, new N2.Edit.Workflow.StateChanger(), new N2.Configuration.EditSection());
            var version = vm.SaveVersion(one);

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

            Assert.That(version.AncestralTrail, Is.EqualTo("/"));
            Assert.That(one.AncestralTrail, Is.EqualTo("/" + root.ID + "/"));
        }
        public override void SetUp()
        {
            base.SetUp();

            var definitions = TestSupport.SetupDefinitions(typeof(PersistableItem1), typeof(PersistableItem2), typeof(PersistablePart1));

            accessor     = new LuceneAccesor(new ThreadContext(), new DatabaseSection());
            indexer      = new LuceneIndexer(accessor, new TextExtractor(new IndexableDefinitionExtractor(definitions)));
            searcher     = new LuceneSearcher(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 <PersistableItem1>(1, "The Root Page", null);
        }
        public void IncludedParts_InheritStateFromPage()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart1>(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 void SavingVersion_IncludesParts()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart1>(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);
        }
        public void AddingVersionOfPart_AddsVersionOfPage_AndReturnsPart()
        {
            PersistableItem1 root = CreateOneItem <PersistableItem1>(0, "root", null);

            persister.Save(root);
            var part = CreateOneItem <PersistablePart1>(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);
        }
        public void Replacing_MasterVersion_WithDraft_RemovesDraftVersion()
        {
            PersistableItem1 master = CreateOneItem <PersistableItem1>(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);
        }