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)); }
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 + "/")); }
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); }
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); }
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); }
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); }
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 + "/")); }
public virtual void CanDropDatabaseSchema() { CreateDatabaseSchema(); DropDatabaseSchema(); PersistableItem testItem = new PersistableItem(); ExceptionAssert.Throws <Exception>( delegate { engine.Persister.Save(testItem); }); }
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); }
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); }
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)); }
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)); }
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 + "/")); }
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); }
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); }
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); }
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); }
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); }
//[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); } }
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)); }
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"); }
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); }
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)); }
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); } }
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 + "/")); }