Пример #1
0
        public void depdendencies_are_incremented_when_property_set()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new Mock <IRepositoryFactory>();
            var stateTracker         = new EntityStateCache();
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var factory = new DynamicProxyFactory(metadataFactory, new NullLogger());
                var parent  = factory.Create(new Parent {
                    Id = "parent"
                }, session);
                var child = factory.Create(new Child {
                    Id = "child"
                }, session);
                parent.Child = child;

                var parentState = stateTracker.Get(parent);
                Assert.Equal(2, parentState.Dependencies.Sequence);

                var childState = stateTracker.Get(child);
                Assert.Equal(1, childState.Dependencies.Sequence);
            }
        }
Пример #2
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);
            }
        }
Пример #3
0
        public void change_tracking_is_applied_when_entity_set_in_constructor()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();

            var mapper            = new Mock <IMapper <Parent> >();
            var repositoryFactory = new Mock <IRepositoryFactory>();

            repositoryFactory.Setup(x => x.Create(It.IsAny <IGraphSession>(), It.IsAny <Type>())).Returns <IGraphSession, Type>((s, t) => new GenericAbstractRepository <Parent>(mapper.Object, s, new DynamicProxyFactory(metadataFactory, new NullLogger())));
            var stateTracker = new EntityStateCache();
            var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var proxy = session.Create(new Parent
                {
                    Id    = "1",
                    Child = new Child {
                        Id = "2"
                    }
                });
                var state = stateTracker.Get(proxy.Child);
                Assert.Equal(EntityStatus.New, state.Status);
            }
        }