public void ReadAndWriteRootEntity()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <RootKnownBaseModel>(context);

            var rootEntity = new RootKnownBaseModel
            {
                Description = "ReadAndWriteRootEntity-RootKnownBaseModel"
            };

            dbSet.Add(rootEntity);

            var childEntity = new UnknownChildToRootModel
            {
                Description = "ReadAndWriteRootEntity-UnknownChildToRootModel"
            };

            dbSet.Add(childEntity);

            context.SaveChanges();

            ResetMongoDb();
            dbSet = new MongoDbSet <RootKnownBaseModel>(context);

            var dbRootEntity = dbSet.Where(e => e.Id == rootEntity.Id).FirstOrDefault();

            Assert.IsNotNull(dbRootEntity);
            Assert.IsInstanceOfType(dbRootEntity, typeof(RootKnownBaseModel));

            var dbChildEntity = dbSet.Where(e => e.Id == childEntity.Id).FirstOrDefault();

            Assert.IsNotNull(dbChildEntity);
            Assert.IsInstanceOfType(dbChildEntity, typeof(UnknownChildToRootModel));
        }
        public void ExtraElementsSerializationIntegrationTest()
        {
            EntityMapping.AddMappingProcessor(new CollectionNameProcessor());
            EntityMapping.AddMappingProcessor(new ExtraElementsProcessor());
            EntityMapping.RegisterType(typeof(ExtraElementsAttrModel));
            EntityMapping.RegisterType(typeof(ModelWithExtraElements));

            var connection = TestConfiguration.GetConnection();
            var modelWithExtraPropertiesDbSet = new MongoDbSet <ModelWithExtraElements>();

            modelWithExtraPropertiesDbSet.SetConnection(connection);

            var entity = new ModelWithExtraElements
            {
                PropertyOne = "ModelWithExtraElements",
                PropertyTwo = 123
            };

            modelWithExtraPropertiesDbSet.Add(entity);
            modelWithExtraPropertiesDbSet.SaveChanges();

            var extraElementsAttrModelDbSet = new MongoDbSet <ExtraElementsAttrModel>();

            extraElementsAttrModelDbSet.SetConnection(connection);

            var dbEntity = extraElementsAttrModelDbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            Assert.AreEqual("ModelWithExtraElements", dbEntity.AdditionalElements[nameof(ModelWithExtraElements.PropertyOne)]);
            Assert.AreEqual(123, dbEntity.AdditionalElements[nameof(ModelWithExtraElements.PropertyTwo)]);
        }
        public void SuccessfullyAttachUntrackedEntity()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <DbSetModel>(context);

            var model = new DbSetModel
            {
                Id = "abcd"
            };

            dbSet.Add(model);

            context.SaveChanges();

            ResetMongoDb();

            context = new MongoDbContext(connection);
            dbSet   = new MongoDbSet <DbSetModel>(context);

            var result = dbSet.AsNoTracking().FirstOrDefault();

            context.Attach(result);

            Assert.AreEqual(MongoFramework.Infrastructure.EntityEntryState.NoChanges, context.ChangeTracker.GetEntry(result).State);
        }
        public async Task SuccessfullyLinqFindNoTrackingAsync()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            var model = new TestModel
            {
                Id          = "abcd",
                Description = "SuccessfullyFindTracked.1"
            };

            dbSet.Add(model);

            context.SaveChanges();

            ResetMongoDb();

            context = new MongoDbContext(connection);
            dbSet   = new MongoDbSet <TestModel>(context);

            var result = await dbSet.AsNoTracking().FirstOrDefaultAsync();

            Assert.IsNull(context.ChangeTracker.GetEntry(result));
        }
        public async Task SuccessfullyLinqFindTrackedAsync()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            var model = new TestModel
            {
                Id          = "abcd",
                Description = "SuccessfullyFindTracked.1"
            };

            dbSet.Add(model);

            context.SaveChanges();

            ResetMongoDb();

            var result = await dbSet.FirstOrDefaultAsync();

            result.Description = "changed";
            context.ChangeTracker.DetectChanges();

            Assert.AreEqual(MongoFramework.Infrastructure.EntityEntryState.Updated, context.ChangeTracker.GetEntry(result).State);
        }
Exemple #6
0
        public void ValidationExceptionOnInvalidModel()
        {
            var dbSet = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetConnection(TestConfiguration.GetConnection());

            dbSet.Add(new MongoDbSetValidationModel());
            dbSet.SaveChanges();
        }
Exemple #7
0
        public void SearchGeoNearRecordLimits()
        {
            var connection = TestConfiguration.GetConnection();
            var dbSet      = new MongoDbSet <SearchGeoModel>();

            dbSet.SetConnection(connection);

            for (var i = 0; i < 100; i++)
            {
                dbSet.Add(new SearchGeoModel
                {
                    Description        = $"Adelaide ({i})",
                    PrimaryCoordinates = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(
                        new GeoJson2DGeographicCoordinates(138.600739, -34.928497)
                        )
                });
            }

            dbSet.AddRange(new SearchGeoModel[]
            {
                new SearchGeoModel {
                    Description = "New York", PrimaryCoordinates = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(
                        new GeoJson2DGeographicCoordinates(-74.005974, 40.712776)
                        )
                },
                new SearchGeoModel {
                    Description = "Perth", PrimaryCoordinates = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(
                        new GeoJson2DGeographicCoordinates(115.860458, -31.950527)
                        )
                },
                new SearchGeoModel {
                    Description = "Hobart", PrimaryCoordinates = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(
                        new GeoJson2DGeographicCoordinates(147.327194, -42.882137)
                        )
                }
            });
            dbSet.SaveChanges();

            IQueryable <SearchGeoModel> WithGeoQuery()
            {
                return(dbSet.SearchGeoNear(e => e.PrimaryCoordinates, new GeoJsonPoint <GeoJson2DGeographicCoordinates>(
                                               new GeoJson2DGeographicCoordinates(138, -30)
                                               )));
            }

            Assert.AreEqual(103, WithGeoQuery().Count());
            Assert.AreEqual(3, WithGeoQuery().Skip(100).Count());

            var afterSkipResult = WithGeoQuery().Skip(100).FirstOrDefault();

            Assert.AreEqual("Hobart", afterSkipResult.Description);

            var afterTakeResult = WithGeoQuery().Take(3).ToArray();

            Assert.AreEqual(3, afterTakeResult.Length);
            Assert.AreEqual("Adelaide (0)", afterTakeResult[0].Description);
        }
        public void ValidationExceptionOnInvalidModel()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetDatabase(database);

            dbSet.Add(new MongoDbSetValidationModel());
            dbSet.SaveChanges();
        }
        public void ReadAndWriteRootEntity()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <RootKnownBaseModel>();

            dbSet.SetDatabase(database);

            var rootEntity = new RootKnownBaseModel
            {
                Description = "ReadAndWriteRootEntity-RootKnownBaseModel"
            };

            dbSet.Add(rootEntity);

            var childEntity = new UnknownChildToRootModel
            {
                Description = "ReadAndWriteRootEntity-UnknownChildToRootModel"
            };

            dbSet.Add(childEntity);

            dbSet.SaveChanges();

            ResetMongoDbDriver();
            dbSet = new MongoDbSet <RootKnownBaseModel>();
            dbSet.SetDatabase(database);

            var dbRootEntity = dbSet.Where(e => e.Id == rootEntity.Id).FirstOrDefault();

            Assert.IsNotNull(dbRootEntity);
            Assert.AreEqual(typeof(RootKnownBaseModel), dbRootEntity.GetType());

            var dbChildEntity = dbSet.Where(e => e.Id == childEntity.Id).FirstOrDefault();

            Assert.IsNotNull(dbChildEntity);
            Assert.AreEqual(typeof(UnknownChildToRootModel), dbChildEntity.GetType());
        }
        public void SuccessfulInsertAndQueryBack()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            dbSet.Add(new TestModel
            {
                Description = "ValueSync"
            });

            Assert.IsFalse(dbSet.Any(m => m.Description == "ValueSync"));
            context.SaveChanges();
            Assert.IsTrue(dbSet.Any(m => m.Description == "ValueSync"));
        }
Exemple #11
0
        public void SuccessfulInsertAndQueryBack()
        {
            var dbSet = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetConnection(TestConfiguration.GetConnection());

            dbSet.Add(new MongoDbSetValidationModel
            {
                RequiredField = "ValueSync"
            });

            Assert.IsFalse(dbSet.Any(m => m.RequiredField == "ValueSync"));
            dbSet.SaveChanges();
            Assert.IsTrue(dbSet.Any(m => m.RequiredField == "ValueSync"));
        }
Exemple #12
0
        public async Task SuccessfulInsertAndQueryBackAsync()
        {
            var dbSet = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetConnection(TestConfiguration.GetConnection());

            dbSet.Add(new MongoDbSetValidationModel
            {
                RequiredField = "ValueAsync"
            });

            Assert.IsFalse(dbSet.Any(m => m.RequiredField == "ValueAsync"));
            await dbSet.SaveChangesAsync().ConfigureAwait(false);

            Assert.IsTrue(dbSet.Any(m => m.RequiredField == "ValueAsync"));
        }
        public void SuccessfulNullFind()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            var model = new TestModel
            {
                Description = "SuccessfulNullFind"
            };

            dbSet.Add(model);

            context.SaveChanges();

            Assert.IsNull(dbSet.Find("abcd"));
        }
        public async Task SuccessfullyFindAsyncTracked()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            var model = new TestModel
            {
                Id          = "abcd",
                Description = "SuccessfullyFindTracked"
            };

            dbSet.Add(model);

            //Note: not saving, but still should be found as tracked
            Assert.AreEqual("SuccessfullyFindTracked", (await dbSet.FindAsync(model.Id)).Description);
            Assert.AreEqual(MongoFramework.Infrastructure.EntityEntryState.Added, context.ChangeTracker.GetEntry(model).State);
        }
        public void SaveWithNullNavigationProperty()
        {
            var connection = TestConfiguration.GetConnection();
            var dbSet      = new MongoDbSet <CollectionIntegrationModel>();

            dbSet.SetConnection(connection);

            var entity = new CollectionIntegrationModel
            {
                Description = "SaveWithNullNavigationProperty"
            };

            dbSet.Add(entity);
            dbSet.SaveChanges();

            var dbEntity = dbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            Assert.AreEqual(0, dbEntity.StringModelEntities.Count);
        }
        public void SuccessfulInsertAndFind()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            var model = new TestModel
            {
                Description = "SuccessfulInsertAndFind"
            };

            dbSet.Add(model);

            context.SaveChanges();

            context = new MongoDbContext(connection);
            dbSet   = new MongoDbSet <TestModel>(context);
            Assert.AreEqual("SuccessfulInsertAndFind", dbSet.Find(model.Id).Description);
            Assert.AreEqual(MongoFramework.Infrastructure.EntityEntryState.NoChanges, context.ChangeTracker.GetEntry(model).State);
        }
        public void SuccessfullyRemoveEntityById()
        {
            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var dbSet      = new MongoDbSet <TestModel>(context);

            var entity = new TestModel
            {
                Description = "SuccessfullyRemoveEntityById"
            };

            dbSet.Add(entity);
            context.SaveChanges();

            dbSet = new MongoDbSet <TestModel>(context);

            dbSet.RemoveById(entity.Id);

            Assert.IsTrue(dbSet.Any(m => m.Description == "SuccessfullyRemoveEntityById"));
            context.SaveChanges();
            Assert.IsFalse(dbSet.Any(m => m.Description == "SuccessfullyRemoveEntityById"));
        }
Exemple #18
0
        public void SuccessfullyRemoveEntityById()
        {
            var dbSet = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetConnection(TestConfiguration.GetConnection());

            var entity = new MongoDbSetValidationModel
            {
                RequiredField = "SuccessfullyRemoveEntityById"
            };

            dbSet.Add(entity);
            dbSet.SaveChanges();

            dbSet.SetConnection(TestConfiguration.GetConnection());

            dbSet.RemoveById(entity.Id);

            Assert.IsTrue(dbSet.Any(m => m.RequiredField == "SuccessfullyRemoveEntityById"));
            dbSet.SaveChanges();
            Assert.IsFalse(dbSet.Any(m => m.RequiredField == "SuccessfullyRemoveEntityById"));
        }