public void DataInstallTest_CoreData_Examine() { //Arrange var examineTestSetup = new ExamineTestSetupHelper(); var storageProvider = new IoHiveTestSetupHelper(examineTestSetup.FrameworkContext); var hiveManager = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), examineTestSetup.ReadonlyProviderSetup, examineTestSetup.ProviderSetup, examineTestSetup.FrameworkContext), storageProvider.CreateGroup("uploader", "storage://file-uploader") }, examineTestSetup.FrameworkContext); RunTest(hiveManager, examineTestSetup.FrameworkContext, () => { hiveManager.Context.GenerationScopedCache.Clear(); }); hiveManager.Dispose(); }
protected void SetupFakeEnvironment() { // TODO: Prettify and extract smaller methods NhibernateTestSetup = new NhibernateTestSetupHelper(); var storageProvider = new IoHiveTestSetupHelper(NhibernateTestSetup.FakeFrameworkContext); Hive = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), NhibernateTestSetup.ReadonlyProviderSetup, NhibernateTestSetup.ProviderSetup, NhibernateTestSetup.FakeFrameworkContext), storageProvider.CreateGroup("uploader", "storage://file-uploader"), }, NhibernateTestSetup.FakeFrameworkContext); AppContext = new FakeUmbracoApplicationContext(Hive, false); var resolverContext = new MockedMapResolverContext(NhibernateTestSetup.FakeFrameworkContext, Hive, new MockedPropertyEditorFactory(AppContext), new MockedParameterEditorFactory()); var webmModelMapper = new CmsModelMapper(resolverContext); var renderModelMapper = new RenderTypesModelMapper(resolverContext); NhibernateTestSetup.FakeFrameworkContext.SetTypeMappers( new FakeTypeMapperCollection(new AbstractMappingEngine[] { webmModelMapper, renderModelMapper, new FrameworkModelMapper(NhibernateTestSetup.FakeFrameworkContext) })); var membersMembershipProvider = new MembersMembershipProvider { AppContext = AppContext }; membersMembershipProvider.Initialize("MembersMembershipProvider", new NameValueCollection()); MembershipService = new MembershipService<Member, MemberProfile>(AppContext.FrameworkContext, Hive, "security://member-profiles", "security://member-groups", Umbraco.Framework.Security.Model.FixedHiveIds. MemberProfileVirtualRoot, membersMembershipProvider, Enumerable.Empty<MembershipProviderElement>()); PublicAccessService = new PublicAccessService(Hive, MembershipService, AppContext.FrameworkContext); }
public void Setup() { // Setup Hive _nhibernateTestSetup = new NhibernateTestSetupHelper(useNhProf: true); var storageProvider = new IoHiveTestSetupHelper(_nhibernateTestSetup.FakeFrameworkContext); Hive = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), _nhibernateTestSetup.ReadonlyProviderSetup, _nhibernateTestSetup.ProviderSetup, _nhibernateTestSetup.FakeFrameworkContext), storageProvider.CreateGroup("uploader", "storage://") }, _nhibernateTestSetup.FakeFrameworkContext); // Setup Schemas Hive.Cms() .UsingStore<IContentStore>() .NewSchema("homepageSchema") .Define(NodeNameAttributeDefinition.AliasValue, NodeNameAttributeType.AliasValue, "tab1") .Define(SelectedTemplateAttributeDefinition.AliasValue, SelectedTemplateAttributeType.AliasValue, "tab1") .Define("siteName", "system-string-type", "tab1") .Define("siteDescription", "system-string-type", "tab1") .Define("bodyText", "system-long-string-type", "tab2") .Commit(); Hive.Cms() .UsingStore<IContentStore>() .NewSchema("textpageSchema") .Define(NodeNameAttributeDefinition.AliasValue, NodeNameAttributeType.AliasValue, "tab1") .Define(SelectedTemplateAttributeDefinition.AliasValue, SelectedTemplateAttributeType.AliasValue, "tab1") .Define("bodyText", "system-long-string-type", "tab1") .Commit(); Hive.Cms() .UsingStore<IContentStore>() .NewSchema("complexpageSchema") .Define(NodeNameAttributeDefinition.AliasValue, NodeNameAttributeType.AliasValue, "tab1") .Define(SelectedTemplateAttributeDefinition.AliasValue, SelectedTemplateAttributeType.AliasValue, "tab1") .Define("color", "system-string-type", "tab1") .Define("integer", "system-integer-type", "tab1") .Define("date", "system-date-time-type", "tab1") .Define("bodyText", "system-long-string-type", "tab1") .Commit(); // Setup Content with a specific DateTime _fixedDate = DateTime.Now.Subtract(TimeSpan.FromMinutes(5)); _homePage = Hive.Cms().NewRevision("Home", "home", "homepageSchema") .SetSelectedTemplate(new HiveId("storage", "templates", new HiveIdValue("/homepageTemplate.cshtml"))) .SetValue("siteName", "Test Site Name") .SetValue("siteDescription", "Test Site Description") .SetValue("bodyText", "<p>Test Site Body Text</p>") .Publish(); _homePage.Revision.Item.UtcCreated = _fixedDate; _homePage.Revision.MetaData.UtcStatusChanged = _fixedDate; _homePage.Commit(); for (var i = 0; i < 5; i++) { // Create child var child = Hive.Cms().NewRevision("Child" + i, "child-" + i, "textpageSchema") .SetSelectedTemplate(new HiveId("storage", "templates", new HiveIdValue("/textpageTemplate.cshtml"))) .SetParent(_homePage.Item) .SetValue("bodyText", "<p>Child Content " + i + " Revision 1 " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") .Publish() .Commit(); // Create revisions //for (var j = 0; j < i; j++) //{ // Hive.Cms().NewRevisionOf(child.Item) // .SetValue("bodyText", "<p>Child Content " + i + " Revision " + (j + 2) + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") // .Publish() // .Commit(); //} //if (i < 3) //{ // for (var j = 0; j < 6; j++) // { // // Create grand child // var grandChild = Hive.Cms().NewRevision("Grand Child" + j, "grand-child-" + j, "textpageSchema") // .SetParent(child.Item) // .SetValue("bodyText", "<p>Grand Child Content " + j + " Revision 1 " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") // .Publish() // .Commit(); // // Create revisions // for (var k = 0; k < j; k++) // { // Hive.Cms().NewRevisionOf(grandChild.Item) // .SetValue("bodyText", "<p>Grand Child Content " + j + " Revision " + (k + 2) + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") // .Publish() // .Commit(); // } // if (j < 2) // { // // Create great grand children // for (var k = 0; k < 10; k++) // { // var greatGrandChild = // Hive.Cms().NewRevision("Great Grand Child" + k, "great-grand-child-" + k, // "complexpageSchema") // .SetParent(grandChild.Item) // .SetValue("color", "#0000" + k.ToString() + k.ToString()) // .SetValue("integer", k) // .SetValue("date", DateTimeOffset.Now.AddDays(k)) // .SetValue("bodyText", // "<p>Great Grand Child Content " + k + " Revision 1 " + // Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + // Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + // Guid.NewGuid().ToString() + " the end.</p>") // .Publish() // .Commit(); // // Create revisions // for (var l = 0; l < k; l++) // { // Hive.Cms().NewRevisionOf(greatGrandChild.Item) // .SetValue("bodyText", "<p>Great Grand Child Content " + k + " Revision " + (l + 2) + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") // .Publish() // .Commit(); // } // if (k >= 8) // { // // Create unpublished revisions // Hive.Cms().NewRevisionOf(greatGrandChild.Item) // .SetValue("bodyText", "<p>Great Grand Child Content " + k + " Unpublished Revision " + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") // .Commit(); // } // } // } // } //} } //for(var i = 0; i < 2; i++) //{ // var trashChild = Hive.Cms().NewRevision("Trash Child" + i, "trash-child-" + i, "textpageSchema") // .SetParent(FixedHiveIds.ContentRecylceBin) // .SetValue("bodyText", "<p>Trash Child Content " + i + " Revision 1 " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " " + Guid.NewGuid().ToString() + " the end.</p>") // .Publish() // .Commit(); //} }
private static HiveManager GetHiveForTest() { var nhibernateTestSetup = new NhibernateTestSetupHelper(); var storageProvider = new IoHiveTestSetupHelper(nhibernateTestSetup.FakeFrameworkContext); var hive = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), nhibernateTestSetup.ReadonlyProviderSetup, nhibernateTestSetup.ProviderSetup, nhibernateTestSetup.FakeFrameworkContext), storageProvider.CreateGroup("uploader", "storage://") }, nhibernateTestSetup.FakeFrameworkContext); return hive; }
public void WhenEntityIsAdded_PreAddOrUpdateBeforeUnitComplete_TaskChangesItem_ItemIsSavedWithNewValues() { // Arrange var nhibernateTestSetup = new NhibernateTestSetupHelper(); var storageProvider = new IoHiveTestSetupHelper(nhibernateTestSetup.FakeFrameworkContext); var hive = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), nhibernateTestSetup.ReadonlyProviderSetup, nhibernateTestSetup.ProviderSetup, nhibernateTestSetup.FakeFrameworkContext), storageProvider.CreateGroup("uploader", "storage://file-uploader"), }, nhibernateTestSetup.FakeFrameworkContext); var eventMock = Substitute.For<AbstractTask>(hive.FrameworkContext); eventMock.When(x => x.Execute(Arg.Any<TaskExecutionContext>())) .Do(x => { var context = x.Args()[0] as TaskExecutionContext; if(context != null) { var uow = context.EventSource as IGroupUnit<IProviderTypeFilter>; var args = context.EventArgs.CallerEventArgs as HiveEntityPreActionEventArgs; if (uow != null && args != null) { var item = args.Entity as TypedEntity; if (item != null && item.Attributes.Any( y => y.AttributeDefinition.Alias == NodeNameAttributeDefinition.AliasValue)) { item.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"] = "Something else"; uow.Repositories.AddOrUpdate(item); } } } }); // Act hive.FrameworkContext.TaskManager.AddTask(TaskTriggers.Hive.PreAddOrUpdateOnUnitComplete, () => eventMock, true); var id = HiveId.Empty; using (var uow = hive.OpenWriter<IContentStore>()) { var anything = HiveModelCreationHelper.MockTypedEntity(); // Cause the task to be fired uow.Repositories.AddOrUpdate(anything); uow.Complete(); id = anything.Id; } using (var uow = hive.OpenWriter<IContentStore>()) { // Cause the task to be fired var getItem = uow.Repositories.Get(id); // Store is mocked Assert.NotNull(getItem); // Assert the task has been fired Assert.AreEqual("Something else", getItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"]); } }
public void Integration_WhenEntityIsAdded_EnsureUniqueNameTask_RenamesItemIfNotUnique() { IHiveManager hive = null; try { var nhibernateTestSetup = new NhibernateTestSetupHelper(useNhProf:true); var storageProvider = new IoHiveTestSetupHelper(nhibernateTestSetup.FakeFrameworkContext); hive = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), nhibernateTestSetup.ReadonlyProviderSetup, nhibernateTestSetup.ProviderSetup, nhibernateTestSetup.FakeFrameworkContext), storageProvider.CreateGroup("uploader", "storage://file-uploader"), }, nhibernateTestSetup.FakeFrameworkContext); SetupContentTest(hive); hive.FrameworkContext.TaskManager.AddTask(TaskTriggers.Hive.Revisions.PreAddOrUpdateOnUnitComplete, () => new EnsureUniqueNameTask(hive.FrameworkContext), true); hive.Cms().NewContentType("test-for-dupes") .Define("sometext", "singleLineTextBox", "tab1") .Commit(); var parent = hive.Cms().NewRevision("My site root", "root", "test-for-dupes") .SetValue("sometext", "hallow") .Publish() .Commit(); var firstItem = hive.Cms().NewRevision("My Name", "my-name", "test-for-dupes") .SetValue("sometext", "hallow") .SetParent(parent.Item) .Publish() .Commit(); var firstUnDupedItem = hive.Cms().NewRevision("My Name Unpublished", "my-name-unpublished", "test-for-dupes") .SetValue("sometext", "hallow") .SetParent(parent.Item) .Publish() .Commit(); var shouldBeModified = hive.Cms().NewRevision("My Name", "my-name", "test-for-dupes") .SetValue("sometext", "hallow") .SetParent(parent.Item) .Publish() .Commit(); var shouldBeModified2 = hive.Cms().NewRevision("My Name", "my-name", "test-for-dupes") .SetValue("sometext", "hallow") .SetParent(parent.Item) .Publish() .Commit(); Assert.That(shouldBeModified.Success, Is.True); Assert.That(firstItem.Item.Id, Is.Not.EqualTo(shouldBeModified.Item.Id)); Assert.That(firstItem.Item.Id, Is.Not.EqualTo(shouldBeModified2.Item.Id)); Assert.That(shouldBeModified.Item.Id, Is.Not.EqualTo(shouldBeModified2.Item.Id)); hive.Context.GenerationScopedCache.Clear(); var queryForName = hive.Cms().QueryContent().Where(x => x.InnerAttribute<string>(NodeNameAttributeDefinition.AliasValue, "Name") == "My Name").ToList(); Assert.That(queryForName.Count, Is.EqualTo(1)); hive.Context.GenerationScopedCache.Clear(); using(var uow = hive.OpenReader<IContentStore>()) { var checkFirstItem = uow.Repositories.Get(firstItem.Item.Id); var checkRenamedItem = uow.Repositories.Get(shouldBeModified.Item.Id); var checkRenamedItem2 = uow.Repositories.Get(shouldBeModified2.Item.Id); var firstItemName = checkFirstItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"]; var checkRenamedItemName = checkRenamedItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"]; var checkRenamedItemName2 = checkRenamedItem2.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"]; Assert.That(firstItemName, Is.Not.EqualTo(checkRenamedItemName)); Assert.That(firstItemName, Is.Not.EqualTo(checkRenamedItemName2)); Assert.That(checkRenamedItemName, Is.Not.EqualTo(checkRenamedItemName2)); Assert.That(checkRenamedItemName, Is.EqualTo("My Name (1)")); Assert.That(checkRenamedItemName2, Is.EqualTo("My Name (2)")); var firstItemUrlName = checkFirstItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["UrlName"]; var checkRenamedItemUrlName = checkRenamedItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["UrlName"]; var checkRenamedItemUrlName2 = checkRenamedItem2.Attributes[NodeNameAttributeDefinition.AliasValue].Values["UrlName"]; Assert.That(firstItemUrlName, Is.Not.EqualTo(checkRenamedItemUrlName)); Assert.That(firstItemUrlName, Is.Not.EqualTo(checkRenamedItemUrlName2)); Assert.That(checkRenamedItemUrlName, Is.Not.EqualTo(checkRenamedItemUrlName2)); Assert.That(checkRenamedItemUrlName, Is.EqualTo("my-name-1")); Assert.That(checkRenamedItemUrlName2, Is.EqualTo("my-name-2")); } } finally { hive.IfNotNull(x => x.Dispose()); } }
public void SetUp() { _nhibernateTestSetup = new NhibernateTestSetupHelper(); var storageProvider = new IoHiveTestSetupHelper(_nhibernateTestSetup.FakeFrameworkContext); Hive = new HiveManager( new[] { new ProviderMappingGroup( "test", new WildcardUriMatch("content://"), _nhibernateTestSetup.ReadonlyProviderSetup, _nhibernateTestSetup.ProviderSetup, _nhibernateTestSetup.FakeFrameworkContext), storageProvider.CreateGroup("uploader", "storage://") }, _nhibernateTestSetup.FakeFrameworkContext); // Setup Schemas Hive.Cms() .UsingStore<IContentStore>() .NewSchema("textpageSchema") .Define(NodeNameAttributeDefinition.AliasValue, NodeNameAttributeType.AliasValue, "tab1") .Define(SelectedTemplateAttributeDefinition.AliasValue, SelectedTemplateAttributeType.AliasValue, "tab1") .Commit(); // Setup Content var root = Hive.Cms().NewRevision("Root", "root", "textpageSchema") .SetSelectedTemplate(new HiveId("storage", "templates", new HiveIdValue("/textpageTemplate.cshtml"))) .Publish() .Commit(); // Avoid type scanning in a unit test runner by passing in the known assembly under test var dynamicExtensionAssemblies = typeof (RenderViewModelExtensions).Assembly.AsEnumerableOfOne(); _root = new Content(root.Item).Bend(Hive, null, null, dynamicExtensionAssemblies); var children = new List<dynamic>(); for (var i = 0; i < 10; i++) { // Create child var child = Hive.Cms().NewRevision("Child" + i, "child-" + i, "textpageSchema") .SetSelectedTemplate(new HiveId("storage", "templates", new HiveIdValue("/textpageTemplate.cshtml"))) .SetParent(root.Item) .Publish() .Commit(); children.Add(new Content(child.Item).Bend(Hive, null, null, dynamicExtensionAssemblies)); } _children = children; // Setup dependency resolver var dependencyResolver = Substitute.For<IDependencyResolver>(); dependencyResolver.GetService(typeof(IHiveManager)).Returns(Hive); DependencyResolver.SetResolver(dependencyResolver); }