Beispiel #1
0
        public void dependencies_are_incremented_as_relationships_are_created()
        {
            var stateTracker = new EntityStateCache();
            var stateFactory = new Mock <IEntityStateCacheFactory>();

            stateFactory.Setup(x => x.Create()).Returns(stateTracker);
            var metadataFactory = new AttributeMetadataFactory(new NullLogger());
            var proxyFactory    = new DynamicProxyFactory(metadataFactory, new NullLogger());

            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new RepositoryFactory(proxyFactory);

            repositoryFactory.Register <Organisation>(session => new Mapper <Organisation>(session, metadataFactory));
            repositoryFactory.Register <AccessGroup>(session => new Mapper <AccessGroup>(session, metadataFactory));
            repositoryFactory.Register <Site>(session => new Mapper <Site>(session, metadataFactory));
            repositoryFactory.Register <Person>(session => new Mapper <Person>(session, metadataFactory));
            var sessionFactory = new GraphSessionFactory(queryExecutorFactory.Object, repositoryFactory, stateFactory.Object, proxyFactory);

            using (var session = sessionFactory.OpenSession())
            {
                var organisation = session.Create(new Organisation
                {
                    Id = "organisation"
                });

                var site = session.Create(new Site
                {
                    Id = "site"
                });

                var accessGroup = session.Create(new AccessGroup
                {
                    Id = "accessGroup"
                });

                var person = session.Create(new Person
                {
                    Id = "person"
                });

                organisation.Add(site);
                organisation.Add(accessGroup);
                site.Add(accessGroup);
                person.Add(organisation);
                person.Add(site);

                var organisationMetadata = stateTracker.Get(organisation);
                var siteMetadata         = stateTracker.Get(site);
                var accessGroupMetadata  = stateTracker.Get(accessGroup);
                var personMetadata       = stateTracker.Get(person);

                Assert.Equal(1, accessGroupMetadata.Dependencies.Sequence);
                Assert.Equal(2, siteMetadata.Dependencies.Sequence);
                Assert.Equal(3, organisationMetadata.Dependencies.Sequence);
                Assert.Equal(4, personMetadata.Dependencies.Sequence);
            }
        }
Beispiel #2
0
        public static IGraphSessionFactory CreateTestSessionFactory(IRepositoryFactory repositoryFactory)
        {
            var logger                  = Logger();
            var metadataFactory         = MetadataFactory(logger);
            var proxyFactory            = ProxyFactory(metadataFactory, logger);
            var entityStateCacheFactory = EntityStateCacheFactory();
            var queryExecutorFactory    = QueryExecutorFactory();
            var factory                 = new GraphSessionFactory(queryExecutorFactory, repositoryFactory, entityStateCacheFactory, proxyFactory);

            return(factory);
        }
Beispiel #3
0
        public static IGraphSessionFactory CreateTestSessionFactory(params IMapper[] mappers)
        {
            var logger                  = Logger();
            var metadataFactory         = MetadataFactory(logger);
            var proxyFactory            = ProxyFactory(metadataFactory, logger);
            var entityStateCacheFactory = EntityStateCacheFactory();
            var queryExecutorFactory    = QueryExecutorFactory();
            var repositoryFactory       = new RepositoryFactory(proxyFactory);

            foreach (var mapper in mappers)
            {
                repositoryFactory.Register(session => mapper, mapper.Type);
            }
            var factory = new GraphSessionFactory(queryExecutorFactory, repositoryFactory, entityStateCacheFactory, proxyFactory);

            return(factory);
        }