public void Setup()
        {
            var helper = new NhibernateTestSetupHelper(new FakeFrameworkContext());

            ProviderSetup = helper.ProviderSetup;
            ReadonlyProviderSetup = helper.ReadonlyProviderSetup;
        }
Пример #2
0
 public void TestSetup()
 {
     var testSetup = new NhibernateTestSetupHelper();
     _nhSessionHelper = new NhSessionHelper(testSetup.SessionForTest, testSetup.FakeFrameworkContext);
     _rdbmsTypeMapper = new RdbmsModelMapper(_nhSessionHelper, testSetup.FakeFrameworkContext);
     _rdbmsTypeMapper.ConfigureMappings();
 }
Пример #3
0
        public void DataInstallTest_CoreData_NHibernate()
        {
            //Arrange

            var nhibernateTestSetup = new NhibernateTestSetupHelper();

            var storageProvider = new IoHiveTestSetupHelper(nhibernateTestSetup.FakeFrameworkContext);

            var hiveManager =
                new HiveManager(
                    new[]
                        {
                            new ProviderMappingGroup(
                                "test",
                                new WildcardUriMatch("content://"),
                                nhibernateTestSetup.ReadonlyProviderSetup,
                                nhibernateTestSetup.ProviderSetup,
                                nhibernateTestSetup.FakeFrameworkContext),
                            storageProvider.CreateGroup("uploader", "storage://file-uploader")
                        },
                    nhibernateTestSetup.FakeFrameworkContext);

            RunTest(hiveManager, nhibernateTestSetup.FakeFrameworkContext, () =>
                {
                    nhibernateTestSetup.SessionForTest.Clear();
                    hiveManager.Context.GenerationScopedCache.Clear();
                });

            hiveManager.Dispose();
        }
 public void BeforeTest()
 {
     SetupHelper = new NhibernateTestSetupHelper(useNhProf:true);
     //SetupHelper = new NhibernateTestSetupHelper(useNhProf:true);            
     //SetupHelper = new NhibernateTestSetupHelper(@"Data Source=c:\temp\test.s3db;Version=3;",
     //                                        SupportedNHDrivers.SqlLite,
     //                                        "call",
     //                                        true,
     //                                        useNhProf: true);
     //SetupHelper = new NhibernateTestSetupHelper(@"data source=.\sqlexpress2008;initial catalog=v5units;user id=umbraco;password=umbraco", SupportedNHDrivers.MsSql2008, "call", true, useNhProf: true);
     //SetupHelper = new NhibernateTestSetupHelper(@"data source=C:\Users\Alex\Documents\My Web Sites\Umbraco.Cms.Web.UI-Site\App_Data\Test2.sdf", SupportedNHDrivers.MsSqlCe4, "call", true, useNhProf: true);
 }
Пример #5
0
 protected void TestSetup()
 {
     _helper = new NhibernateTestSetupHelper();
     //_helper = new NhibernateTestSetupHelper(useNhProf:true);
     //_helper = new NhibernateTestSetupHelper(@"Data Source=c:\temp\test.s3db;Version=3;",
     //                                        SupportedNHDrivers.SqlLite,
     //                                        "call",
     //                                        true,
     //                                        useNhProf: true);
     //_helper = new NhibernateTestSetupHelper(@"data source=.\sqlexpress2008;initial catalog=v5units;user id=umbraco;password=umbraco", SupportedNHDrivers.MsSql2008, "call", true, useNhProf: true);
     //_helper = new NhibernateTestSetupHelper(@"data source=C:\Users\Alex\Documents\My Web Sites\Umbraco.Cms.Web.UI-Site\App_Data\Test2.sdf", SupportedNHDrivers.MsSqlCe4, "call", true, useNhProf: true);
     _groupUnitFactory = new GroupUnitFactory(_helper.ProviderSetup, new Uri("content://"), FakeHiveCmsManager.CreateFakeRepositoryContext(_helper.FakeFrameworkContext));
 }
Пример #6
0
        /// <summary>
        /// Creates a new HiveManager with an NHibernate default mapping group and the supplied provider mapping groups
        /// appended
        /// </summary>
        /// <param name="providerMappingGroups"></param>
        /// <param name="frameworkContext"></param>
        /// <returns></returns>
        public static IHiveManager NewWithNhibernate(IEnumerable <ProviderMappingGroup> providerMappingGroups, FakeFrameworkContext frameworkContext)
        {
            var helper   = new NhibernateTestSetupHelper(frameworkContext);
            var uriMatch = new WildcardUriMatch(new Uri("content://"));
            var persistenceMappingGroup = new ProviderMappingGroup(
                "default",
                uriMatch,
                helper.ReadonlyProviderSetup,
                helper.ProviderSetup,
                frameworkContext);

            return(new HiveManager(new[] { persistenceMappingGroup }.Union(providerMappingGroups), frameworkContext));
        }
        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 TestSetup()
        {
            this.Setup = new NhibernateTestSetupHelper();
            this._singleProvider = new ProviderMappingGroup("default", new WildcardUriMatch(new Uri("content://")), this.Setup.ReadonlyProviderSetup, this.Setup.ProviderSetup, this.Setup.FakeFrameworkContext);
            this.HiveManager = new HiveManager(this._singleProvider, this._singleProvider.FrameworkContext);

            this.AppContext = new FakeUmbracoApplicationContext(this.HiveManager, false);

            this._resolverContext = new MockedMapResolverContext(this.HiveManager.FrameworkContext, this.HiveManager, new MockedPropertyEditorFactory(this.AppContext), new MockedParameterEditorFactory());

            //mappers
            var cmsModelMapper = new CmsModelMapper(this._resolverContext);
            var persistenceToRenderModelMapper = new RenderTypesModelMapper(this._resolverContext);
            
            this.Setup.FakeFrameworkContext.SetTypeMappers(new FakeTypeMapperCollection(new AbstractMappingEngine[] { cmsModelMapper, persistenceToRenderModelMapper }));

            var membersMembershipProvider = new MembersMembershipProvider { AppContext = AppContext };
            MembershipService = new MembershipService<Member, MemberProfile>(AppContext.FrameworkContext, HiveManager,
                "security://member-profiles", "security://member-groups", Framework.Security.Model.FixedHiveIds.MemberProfileVirtualRoot,
                membersMembershipProvider, Enumerable.Empty<MembershipProviderElement>());

            PublicAccessService = new PublicAccessService(HiveManager, MembershipService, AppContext.FrameworkContext);
        }
        private ProviderMappingGroup CreateFakeDictionaryMappingGroup(FakeFrameworkContext frameworkContext)
        {
            var helper = new NhibernateTestSetupHelper(frameworkContext);
            var uriMatch = new WildcardUriMatch(new Uri("dictionary://"));
            var persistenceMappingGroup = new ProviderMappingGroup(
                "dictionary",
                uriMatch,
                helper.ReadonlyProviderSetup,
                helper.ProviderSetup,
                frameworkContext);

            return persistenceMappingGroup;
        }
Пример #10
0
        public void WhenAddingNodeVersionToSession_ThenClearingAndResettingAttributesCollection_BeforeCommitting_AttributesCollectionIsCorrect()
        {
            var setup = new NhibernateTestSetupHelper();
            var node = new Node() { IsDisabled = false };

            using (var tran = setup.SessionForTest.BeginTransaction())
            {
                node = setup.SessionForTest.Merge(node) as Node;
                tran.Commit();
            }
            setup.SessionForTest.Clear();

            NodeVersion nodeVersion = null;

            using (var tran = setup.SessionForTest.BeginTransaction())
            {
                // Get the node from the cleared session to mimic what the NH revision repository is doing
                node = setup.SessionForTest.Get<Node>(node.Id);

                var currentNodeId = node.Id;
                Assert.That(currentNodeId, Is.Not.EqualTo(Guid.Empty));

                var schema = new AttributeSchemaDefinition { Alias = "tes1", SchemaType = "content" };
                var type = new AttributeType { Alias = "type1" };
                var def = new AttributeDefinition
                    { Alias = "def1", AttributeDefinitionGroup = new AttributeDefinitionGroup { Alias = "group1", AttributeSchemaDefinition = schema}, AttributeSchemaDefinition = schema, AttributeType = type};
                schema.AttributeDefinitions.Add(def);
                nodeVersion = new NodeVersion { DefaultName = "test", Node = node, AttributeSchemaDefinition = schema };
                nodeVersion.Attributes.Add(new Attribute { AttributeDefinition = def, NodeVersion = nodeVersion });
                nodeVersion.Node = node;

                // Merge the version into the session, which will add it to 1st-level cache but we haven't committed to db yet
                nodeVersion = setup.SessionForTest.Merge(nodeVersion) as NodeVersion;

                var persister = setup.SessionForTest.GetSessionImplementation().PersistenceContext;

                nodeVersion.Attributes.Clear();
                nodeVersion.Attributes.Add(new Attribute { AttributeDefinition = def, NodeVersion = nodeVersion });

                nodeVersion = setup.SessionForTest.Merge(nodeVersion) as NodeVersion;

                node.NodeVersions.Add(nodeVersion);

                setup.SessionForTest.Merge(node);

                tran.Commit();
            }
            setup.SessionForTest.Clear();

            using (var tran = setup.SessionForTest.BeginTransaction())
            {
                var reloadVersion = setup.SessionForTest.Get<NodeVersion>(nodeVersion.Id);
                reloadVersion.Attributes.Clear();
                setup.SessionForTest.Merge(reloadVersion);
                tran.Commit();
            }

            using (var tran = setup.SessionForTest.BeginTransaction())
            {
                var reloadVersion = setup.SessionForTest.Get<NodeVersion>(nodeVersion.Id);
                Assert.That(reloadVersion.Attributes.Count, Is.EqualTo(1));
            }
        }
 protected void TestSetup()
 {
     _helper = new NhibernateTestSetupHelper();
     _groupUnitFactory = new GroupUnitFactory(_helper.ProviderSetup, new Uri("content://"), FakeHiveCmsManager.CreateFakeRepositoryContext(_helper.FakeFrameworkContext));
 }
Пример #12
0
        public void AddOneRemoveOne_EntityDoesntExist()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();

            HiveId id;
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                var entity = HiveModelCreationHelper.CreateAttributeType("alias", "name", "description");
                uow.EntityRepository.Schemas.AddOrUpdate(entity);
                uow.Complete();
                id = entity.Id;
            }

            setup.SessionForTest.Clear();

            //Act

            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                uow.EntityRepository.Schemas.Delete<AttributeType>(id);
                uow.Complete();
            }

            //assert
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                Assert.IsNull(uow.EntityRepository.Schemas.Get<AttributeType>(id));
            }
        }
        public static TypedEntity SetupTestData(Guid newGuid, Guid newGuidRedHerring, NhibernateTestSetupHelper repo)
        {
            var entity = HiveModelCreationHelper.MockTypedEntity();
            entity.Id = new HiveId(newGuid);
            entity.EntitySchema.Alias = "schema-alias1";

            var existingDef = entity.EntitySchema.AttributeDefinitions[0];
            var newDef = HiveModelCreationHelper.CreateAttributeDefinition("aliasForQuerying", "", "", existingDef.AttributeType, existingDef.AttributeGroup, true);
            entity.EntitySchema.AttributeDefinitions.Add(newDef);
            entity.Attributes.Add(new TypedAttribute(newDef, "my-new-value"));

            entity.Attributes[1].DynamicValue = "not-on-red-herring";
            entity.Attributes[NodeNameAttributeDefinition.AliasValue].Values["UrlName"] = "my-test-route";

            var redHerringEntity = HiveModelCreationHelper.MockTypedEntity();
            redHerringEntity.Id = new HiveId(newGuidRedHerring);
            redHerringEntity.EntitySchema.Alias = "redherring-schema";

            using (var uow = repo.ProviderSetup.UnitFactory.Create())
            {
                uow.EntityRepository.AddOrUpdate(entity);
                uow.EntityRepository.AddOrUpdate(redHerringEntity);
                uow.Complete();
            }

            return entity;
        }
        public static TypedEntity SetupTestData(Guid newGuid, Guid newGuidRedHerring, NhibernateTestSetupHelper repo)
        {
            var entity = HiveModelCreationHelper.MockTypedEntity();

            entity.Id = new HiveId(newGuid);
            entity.EntitySchema.Alias = "schema-alias1";

            var existingDef = entity.EntitySchema.AttributeDefinitions[0];
            var newDef      = HiveModelCreationHelper.CreateAttributeDefinition("aliasForQuerying", "", "", existingDef.AttributeType, existingDef.AttributeGroup, true);

            entity.EntitySchema.AttributeDefinitions.Add(newDef);
            entity.Attributes.Add(new TypedAttribute(newDef, "my-new-value"));

            entity.Attributes[1].DynamicValue = "not-on-red-herring";
            entity.Attributes[NodeNameAttributeDefinition.AliasValue].Values["UrlName"] = "my-test-route";

            var redHerringEntity = HiveModelCreationHelper.MockTypedEntity();

            redHerringEntity.Id = new HiveId(newGuidRedHerring);
            redHerringEntity.EntitySchema.Alias = "redherring-schema";

            using (var uow = repo.ProviderSetup.UnitFactory.Create())
            {
                uow.EntityRepository.AddOrUpdate(entity);
                uow.EntityRepository.AddOrUpdate(redHerringEntity);
                uow.Complete();
            }

            return(entity);
        }
        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);
        }
Пример #16
0
        public void SavingNodeVersion_ViaAddingToNodeCollection_UpdatesExistingInstance_WhenMerging()
        {
            var setup = new NhibernateTestSetupHelper();
            var node = new Node() { IsDisabled = false };

            using (var tran = setup.SessionForTest.BeginTransaction())
            {
                node = setup.SessionForTest.Merge(node) as Node;
                //setup.SessionForTest.SaveOrUpdate(node);
                tran.Commit();
            }

            Assert.That(node.Id, Is.Not.EqualTo(Guid.Empty));
            setup.SessionForTest.Clear();

            Assert.That(setup.SessionForTest.QueryOver<Node>().List().Count, Is.EqualTo(1));
            Assert.That(node.Id, Is.Not.EqualTo(Guid.Empty));

            NodeVersion nodeVersion = null;

            using (var tran = setup.SessionForTest.BeginTransaction())
            {
                // Get the node from the cleared session to mimic what the NH revision repository is doing
                node = setup.SessionForTest.Get<Node>(node.Id);

                var currentNodeId = node.Id;
                Assert.That(currentNodeId, Is.Not.EqualTo(Guid.Empty));

                var schema = new AttributeSchemaDefinition { Alias = "tes1", SchemaType = "content" };
                nodeVersion = new NodeVersion { DefaultName = "test", Node = node, AttributeSchemaDefinition = schema };

                nodeVersion = setup.SessionForTest.Merge(nodeVersion) as NodeVersion;


                node.NodeVersions.Add(nodeVersion);
                
                node = setup.SessionForTest.Merge(node) as Node;

                tran.Commit();
                Assert.That(currentNodeId, Is.EqualTo(node.Id));
                Assert.That(node.NodeVersions.Count, Is.EqualTo(1));
                Assert.That(node.NodeVersions.First().Id, Is.EqualTo(nodeVersion.Id));
                Assert.That(nodeVersion.Id, Is.Not.EqualTo(Guid.Empty));
            }

            setup.SessionForTest.Clear();

            Assert.That(setup.SessionForTest.QueryOver<Node>().List().Count, Is.EqualTo(2)); // One for the Node, one for the Schema
            Assert.That(node.Id, Is.Not.EqualTo(Guid.Empty));

            node = setup.SessionForTest.Get<Node>(node.Id);

            Assert.That(node.NodeVersions, Is.Not.Empty);
            Assert.That(node.NodeVersions.Count, Is.EqualTo(1));
            Assert.That(nodeVersion.Id, Is.Not.EqualTo(Guid.Empty));
            Assert.That(node.NodeVersions.First().Id, Is.EqualTo(nodeVersion.Id));
        }
Пример #17
0
        public void IfUnitOfWorkUncomitted_SchemaDataStoreNotUpdated()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();
            HiveId id;

            //act
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                var entitySchema = HiveModelCreationHelper.MockEntitySchema("blah-alias", "blah-name");
                uow.EntityRepository.Schemas.AddOrUpdate(entitySchema);
                id = entitySchema.Id;
                Assert.IsNotNull(uow.EntityRepository.Schemas.Get<EntitySchema>(id));
            }

            setup.SessionForTest.Clear();

            //assert
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                Assert.AreNotEqual(id, HiveId.Empty);
                Assert.IsNull(uow.EntityRepository.Schemas.Get<EntitySchema>(id));
            }
        }
Пример #18
0
        public void UnitTestCtor_SessionSurvivesUnits()
        {
            // Arrange
            var setup = new NhibernateTestSetupHelper();
            Guid entitySessionId;
            Guid revisionSessionId;
            Guid schemaSessionId;
            
            // Act
            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                dynamic entitySession = new AccessPrivateWrapper(((EntityRepository)writer.EntityRepository).Helper.NhSession);
                dynamic schemaSession = new AccessPrivateWrapper(((SchemaRepository)writer.EntityRepository.Schemas).Helper.NhSession);
                dynamic revisionSession = new AccessPrivateWrapper(((RevisionRepository)writer.EntityRepository.Revisions).Helper.NhSession);
                entitySessionId = entitySession.SessionId;
                schemaSessionId = schemaSession.SessionId;
                revisionSessionId = revisionSession.SessionId;
            }

            // Assert
            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                dynamic entitySession = new AccessPrivateWrapper(((EntityRepository) writer.EntityRepository).Helper.NhSession);
                dynamic schemaSession = new AccessPrivateWrapper(((SchemaRepository)writer.EntityRepository.Schemas).Helper.NhSession);
                dynamic revisionSession = new AccessPrivateWrapper(((RevisionRepository)writer.EntityRepository.Revisions).Helper.NhSession);

                Assert.AreNotEqual(entitySession.SessionId, Guid.Empty);
                Assert.AreNotEqual(schemaSession.SessionId, Guid.Empty);
                Assert.AreNotEqual(revisionSession.SessionId, Guid.Empty);
                Assert.AreEqual(entitySessionId, entitySession.SessionId);
                Assert.AreEqual(schemaSessionId, entitySession.SessionId);
                Assert.AreEqual(revisionSessionId, entitySession.SessionId);
                Assert.AreEqual(entitySession.SessionId, schemaSession.SessionId);
                Assert.AreEqual(entitySession.SessionId, revisionSession.SessionId);
            }
        }
Пример #19
0
        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;
        }
Пример #20
0
        public void OnceUnitOpened_TransactionPropertyIsNotPopulatedUntilEnsureBegunCalled()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();

            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                dynamic access = new AccessPrivateWrapper(writer.EntityRepository.Transaction);
                Assert.Null(access._nhTransaction);
                writer.EntityRepository.Transaction.EnsureBegun();
                Assert.NotNull(access._nhTransaction);
            }
        }
Пример #21
0
 public void GetWithNullId_ResultsInArgumentNullException()
 {
     //Arrange
     var setup = new NhibernateTestSetupHelper();
     using (var writer = setup.ProviderSetup.UnitFactory.Create())
     {
         //Assert
         Assert.Throws<ArgumentNullException>(() => writer.EntityRepository.Get<TypedEntity>(HiveId.Empty));
     }
 }
Пример #22
0
        public void OnceDisposed_ExceptionsThrown()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();

            //Act
            var uow = setup.ProviderSetup.UnitFactory.Create();
            uow.Dispose();

            var entity = HiveModelCreationHelper.CreateAttributeType("alias", "name", "description");
            Assert.Throws<ObjectDisposedException>(() => { var accessorTest = uow.EntityRepository; });
            Assert.Throws<ObjectDisposedException>(() => { var accessorTest = uow.EntityRepository.Revisions; });
            Assert.Throws<ObjectDisposedException>(() => { var accessorTest = uow.EntityRepository.Schemas; });
            Assert.Throws<ObjectDisposedException>(() => { var accessorTest = uow.EntityRepository.Schemas.Revisions; });
            Assert.Throws<ObjectDisposedException>(() => uow.EntityRepository.Schemas.AddOrUpdate(entity));
        }
        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());
            }
            
        }
Пример #24
0
        public void IfUnitOfWorkUncomitted_RevisionDataStoreNotUpdated()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();
            HiveId id;
            HiveId revisionId;

            //act
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                var entity = HiveModelCreationHelper.MockTypedEntity(false);
                var revision = new Revision<TypedEntity>(entity);

                uow.EntityRepository.Revisions.AddOrUpdate(revision);

                id = revision.Item.Id;
                revisionId = revision.MetaData.Id;
            }

            setup.SessionForTest.Clear();

            //assert
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                Assert.AreNotEqual(id, HiveId.Empty);
                Assert.AreNotEqual(revisionId, HiveId.Empty);
                Assert.IsNull(uow.EntityRepository.Revisions.Get<TypedEntity>(id, revisionId));
            }
        }
        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"]);
            }
        }
Пример #26
0
        public void OnceUnitOfWorkCommitted_RevisionDataStoreUpdated()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();
            HiveId id;
            HiveId revisionId;

            //Act
            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                //var entitySchema = HiveModelCreationHelper.MockEntitySchema("blah-alias", "blah-name");
                var entity = HiveModelCreationHelper.MockTypedEntity(false);
                var revision = new Revision<TypedEntity>(entity);

                writer.EntityRepository.Revisions.AddOrUpdate(revision);
                writer.Complete();

                id = revision.Item.Id;
                revisionId = revision.MetaData.Id;
                Assert.IsNotNull(writer.EntityRepository.Revisions.Get<TypedEntity>(id, revisionId));
            }

            setup.SessionForTest.Clear();

            //assert
            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                Assert.AreNotEqual(id, Guid.Empty);
                Assert.IsNotNull(writer.EntityRepository.Revisions.Get<TypedEntity>(id, revisionId));
            }
        }
Пример #27
0
        public void OnceUnitOfWorkCommitted_SchemaDataStoreUpdated()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();
            HiveId id;
            
            //Act
            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                var entity = HiveModelCreationHelper.CreateAttributeType("alias", "name", "description");

                writer.EntityRepository.Schemas.AddOrUpdate(entity);
                writer.Complete();
                id = entity.Id;
                Assert.IsNotNull(writer.EntityRepository.Schemas.Get<AttributeType>(id));
            }

            setup.SessionForTest.Clear();

            //assert
            using (var writer = setup.ProviderSetup.UnitFactory.Create())
            {
                Assert.IsNotNull(writer.EntityRepository.Schemas.Get<AttributeType>(id));
            }
        }
 public void BeforeTest()
 {
     SetupHelper = new NhibernateTestSetupHelper();            
 }
Пример #29
0
        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();
            //}
        }
Пример #30
0
        public void IfUnitOfWorkUncomitted_EntityDataStoreNotUpdated()
        {
            //Arrange
            var setup = new NhibernateTestSetupHelper();
            HiveId id;

            //act
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                var entity = HiveModelCreationHelper.MockTypedEntity(false);
                uow.EntityRepository.AddOrUpdate(entity);
                id = entity.Id;
                Assert.IsNotNull(uow.EntityRepository.Get<TypedEntity>(id));
            }

            setup.SessionForTest.Clear();

            //assert
            using (var uow = setup.ProviderSetup.UnitFactory.Create())
            {
                Assert.AreNotEqual(id, HiveId.Empty);
                Assert.IsNull(uow.EntityRepository.Get<TypedEntity>(id));
            }
        }