Ejemplo n.º 1
0
        public void CrUD_Nodes(EntityManagerBase mgr)
        {
            DriverProvider provider = Fixture.GetService <DriverProvider <GlobalTestContext> >();

            using (ISession session = provider.GetDriver().Session())
            {
                Symbol s = new Symbol();

                string name = Guid.NewGuid().ToString("N");

                Book book = new Book()
                {
                    Name = name
                };
                Chapter chapter = new Chapter()
                {
                    Name = name
                };

                Assert.Equal(
                    0,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s,type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );

                List <IOgmEntity> res = mgr.CreateNodes(session, new IOgmEntity[] { book, chapter }).ToList();

                Assert.Equal(
                    2,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );

                (res.First(p => p is Book) as Book).Index       = 3;
                (res.First(p => p is Book) as Book).Name        = null;
                (res.First(p => p is Chapter) as Chapter).Index = 4;

                List <IOgmEntity> res2 = mgr.UpdateNodes(session, res).ToList();

                Assert.Equal(
                    1,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} WHERE {s}.Index>0 RETURN {s}")
                    .Count()
                    );
                Assert.Equal(
                    1,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Index = 4 }.ToPropDictionary()).BuildForQuery()} WHERE {s}.Index>0 RETURN {s}")
                    .Count()
                    );

                mgr.DeleteNodes(session, res2);

                Assert.Equal(
                    0,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="manager"></param>
 public EntityValidatorBase(EntityManagerBase <TEntity, TKey> manager)
 {
     if (manager == null)
     {
         throw new ArgumentNullException("manager");
     }
     Manager = manager;
 }
Ejemplo n.º 3
0
        public GraphContext GetContext(EntityManagerBase entityManager = null)
        {
            var driver         = new Mock <IDriver>();
            var driverProvider = new MockDriverProvider(driver.Object);
            var session        = new Mock <ISession>();

            driver.Setup(p => p.Session()).Returns(() => session.Object);
            session.Setup(p => p.Dispose());

            return(new MockContext(driverProvider, new TypesManager(), new DefaultChangeTracker(), entityManager ?? new TestEntityManager()));
        }
Ejemplo n.º 4
0
        public static async Task <TEntity> GetByIdAsyncThrowNotFoundIfNotExists <TEntity>(this EntityManagerBase <TEntity> manager, string id, CancellationToken cancellationToken = default) where TEntity : Entity
        {
            var entity = await manager.GetAsync(id.ToLong(), cancellationToken);

            if (entity == null)
            {
                throw new NotFoundException();
            }

            return(entity);
        }
Ejemplo n.º 5
0
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="manager"></param>
 public IntKeyEntityValidator(EntityManagerBase <TEntity, int> manager)
     : base(manager)
 {
 }
Ejemplo n.º 6
0
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="manager"></param>
 public StringKeyEntityValidator(EntityManagerBase <TEntity, string> manager)
     : base(manager)
 {
 }
Ejemplo n.º 7
0
 public GraphContextBase(IStatementRunner runner, TypesManager typesManager, ChangeTrackerBase changeTracker, EntityManagerBase entityManager)
     : this(typesManager, changeTracker, entityManager)
 {
     Runner = runner ?? throw new ArgumentNullException(nameof(runner));
 }
Ejemplo n.º 8
0
        internal GraphContextBase(TypesManager typesManager, ChangeTrackerBase changeTracker, EntityManagerBase entityManager)
        {
            TypesManager  = typesManager ?? throw new ArgumentNullException(nameof(typesManager));
            ChangeTracker = changeTracker ?? throw new ArgumentNullException(nameof(changeTracker));
            EntityManager = entityManager ?? throw new ArgumentNullException(nameof(entityManager));

            Interceptors = new List <IInterceptor>();
            Interceptors.Add(new OgmCoreProxyPrimitiveInterceptor(this));
            Interceptors.Add(new OgmCoreProxyEntityInterceptor(this));
            Interceptors.Add(new OgmCoreProxyEntityCollectionSetterInterceptor(this));
            Interceptors.Add(new OgmCoreProxyEntityCollectionGetterInterceptor(this));

            ProxyGenerationOptions options = new ProxyGenerationOptions()
            {
                Selector = new OgmCoreProxyInterceptorSelector(this)
            };

            options.AddMixinInstance(new Dictionary <string, object>());
            ProxyGenerator = new ProxyGenerator();

            ObjectWalker = new ObjectGraphWalker(ProxyGenerator, options, typesManager, changeTracker, Interceptors);
        }
Ejemplo n.º 9
0
        public GraphContext(DriverProvider provider, TypesManager typesManager, ChangeTrackerBase changeTracker, EntityManagerBase entityManager)
            : base(typesManager, changeTracker, entityManager)
        {
            Driver = new ManagedDriver(provider.GetDriver(), provider.Manager, this);

            OnModelCreating(new GraphModelBuilder(typesManager));

            Runner = Driver.Session();
        }
Ejemplo n.º 10
0
 public TransactionGraphContext(ITransaction runner, TypesManager typesManager, ChangeTrackerBase changeTracker, EntityManagerBase entityManager)
     : base(runner, typesManager, changeTracker, entityManager)
 {
 }
Ejemplo n.º 11
0
        public void Connections(EntityManagerBase mgr)
        {
            DriverProvider provider = Fixture.GetService <DriverProvider <GlobalTestContext> >();

            using (ISession session = provider.GetDriver().Session())
            {
                Symbol s = new Symbol();
                Symbol d = new Symbol();
                Symbol r = new Symbol();

                string name = Guid.NewGuid().ToString("N");

                Book book = new Book()
                {
                    Name = name
                };
                Chapter chapter = new Chapter()
                {
                    Name = name
                };

                Assert.Equal(
                    0,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );

                List <IOgmEntity> res = mgr.CreateNodes(session, new IOgmEntity[] { book, chapter }).ToList();

                Assert.Equal(
                    2,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );

                List <IOgmConnection> conns = mgr.MergeConnections(session, new Tuple <IOgmConnection, IEnumerable <string> >[]
                {
                    new Tuple <IOgmConnection, IEnumerable <string> >(new Connection()
                    {
                        Source                  = res.First(p => p is Book),
                        Destination             = res.First(p => p is Chapter),
                        SourcePropertyName      = "source",
                        DestinationPropertyName = "destination",
                        Order = 1
                    }, new string[] { nameof(IOgmEntity.EntityId) })
                }).ToList();

                Assert.Equal(1, conns.Count);

                conns = mgr.MergeConnections(session, new Tuple <IOgmConnection, IEnumerable <string> >[]
                {
                    new Tuple <IOgmConnection, IEnumerable <string> >(new Connection()
                    {
                        Source                  = res.First(p => p is Book),
                        Destination             = res.First(p => p is Chapter),
                        SourcePropertyName      = "source",
                        DestinationPropertyName = "destination",
                        Order = 1
                    }, new string[] { nameof(IOgmEntity.EntityId) })
                }).ToList();

                Assert.Equal(1, conns.Count);

                Assert.Equal(
                    1,
                    session.ExecuteQuery <IOgmEntity>($"MATCH " +
                                                      $"{new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary())._(new Rel(r))._V(new Node(d, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary())).BuildForQuery()}" +
                                                      $" RETURN {r}")
                    .Count()
                    );

                mgr.DeleteNodes(session, res);

                conns = mgr.MergeConnections(session, new Tuple <IOgmConnection, IEnumerable <string> >[]
                {
                    new Tuple <IOgmConnection, IEnumerable <string> >(new Connection()
                    {
                        Source                  = res.First(p => p is Book),
                        Destination             = res.First(p => p is Chapter),
                        SourcePropertyName      = "source",
                        DestinationPropertyName = "destination",
                        Order = 1
                    }, new string[] { nameof(IOgmEntity.EntityId) })
                }).ToList();

                Assert.Equal(0, conns.Count);
            }
        }
Ejemplo n.º 12
0
        public void CrUD_Rels(EntityManagerBase mgr)
        {
            DriverProvider provider = Fixture.GetService <DriverProvider <GlobalTestContext> >();

            using (ISession session = provider.GetDriver().Session())
            {
                Symbol s = new Symbol();

                string name = Guid.NewGuid().ToString("N");

                Book book = new Book()
                {
                    Name = name
                };
                Chapter chapter = new Chapter()
                {
                    Name = name
                };

                Assert.Equal(
                    0,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );

                List <IOgmEntity> res = mgr.CreateNodes(session, new IOgmEntity[] { book, chapter }).ToList();

                List <IOgmConnection> rels = mgr.CreateRels(session, new Connection[] { new Connection()
                                                                                        {
                                                                                            Source = res[0], Destination = res[1]
                                                                                        } }).ToList();

                Assert.Equal(
                    1,
                    session.ExecuteQuery <IOgmEntity>($"MATCH ()-[{s} {{EntityId:{rels[0].EntityId}}}]->() RETURN {s}")
                    .Count()
                    );

                (rels[0] as Connection).SourcePropertyName = "test";

                List <IOgmConnection> rels2 = mgr.UpdateRels(session, rels).ToList();

                Assert.Equal(
                    1,
                    session.ExecuteQuery <IOgmEntity>($"MATCH ()-[{s} {{EntityId:{rels[0].EntityId}}}]->() WHERE {s}.SourcePropertyName<>'' RETURN {s}")
                    .Count()
                    );

                mgr.DeleteRels(session, rels);

                Assert.Equal(
                    0,
                    session.ExecuteQuery <IOgmEntity>($"MATCH ()-[{s} {{EntityId:{rels[0].EntityId}}}]->() RETURN {s}")
                    .Count()
                    );

                mgr.DeleteNodes(session, res);

                Assert.Equal(
                    0,
                    session.ExecuteQuery <IOgmEntity>($"MATCH {new Node(s, type: typeof(IOgmEntity), props: new { Name = name }.ToPropDictionary()).BuildForQuery()} RETURN {s}")
                    .Count()
                    );
            }
        }
Ejemplo n.º 13
0
 public GlobalTestContext(DriverProvider <GlobalTestContext> provider, TypesManager typesManager, ChangeTrackerBase changeTracker, EntityManagerBase entityManager)
     : base(provider, typesManager, changeTracker, entityManager)
 {
 }
Ejemplo n.º 14
0
 public MockContext(DriverProvider provider, TypesManager typesManager, ChangeTrackerBase changeTracker, EntityManagerBase entityManager)
     : base(provider, typesManager, changeTracker, entityManager)
 {
 }