public void SuccessfullyUpdateEntity()
        {
            var connection = TestConfiguration.GetConnection();
            var tenantId   = TestConfiguration.GetTenantId();
            var context    = new MongoDbTenantContext(connection, tenantId);
            var dbSet      = new MongoDbTenantSet <TestModel>(context);

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

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

            dbSet = new MongoDbTenantSet <TestModel>(context);

            entity.Description = "SuccessfullyUpdateEntity-Updated";
            dbSet.Update(entity);

            Assert.IsFalse(dbSet.Any(m => m.Description == "SuccessfullyUpdateEntity-Updated"));
            context.SaveChanges();
            Assert.IsTrue(dbSet.Any(m => m.Description == "SuccessfullyUpdateEntity-Updated"));
            Assert.IsTrue(dbSet.First(m => m.Description == "SuccessfullyUpdateEntity-Updated").TenantId == tenantId);
        }
        public void SuccessfullyRemoveRange()
        {
            var connection = TestConfiguration.GetConnection();
            var tenantId   = TestConfiguration.GetTenantId();
            var context    = new MongoDbTenantContext(connection, tenantId);
            var dbSet      = new MongoDbTenantSet <TestModel>(context);

            var entities = new[] {
                new TestModel
                {
                    Description = "SuccessfullyRemoveRange.1"
                },
                new TestModel
                {
                    Description = "SuccessfullyRemoveRange.2"
                }
            };

            dbSet.AddRange(entities);
            context.SaveChanges();

            dbSet = new MongoDbTenantSet <TestModel>(context);

            dbSet.RemoveRange(entities);

            Assert.IsTrue(dbSet.Any(m => m.Description == "SuccessfullyRemoveRange.1"));
            Assert.IsTrue(dbSet.Any(m => m.Description == "SuccessfullyRemoveRange.2"));
            context.SaveChanges();
            Assert.IsFalse(dbSet.Any(m => m.Description == "SuccessfullyRemoveRange.1"));
            Assert.IsFalse(dbSet.Any(m => m.Description == "SuccessfullyRemoveRange.2"));
        }
        public void SuccessfulInsertAndQueryBack()
        {
            var connection = TestConfiguration.GetConnection();
            var tenantId   = TestConfiguration.GetTenantId();
            var context    = new MongoDbTenantContext(connection, tenantId);
            var dbSet      = new MongoDbTenantSet <TestModel>(context);

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

            Assert.IsFalse(dbSet.Any(m => m.Description == "SuccessfulInsertAndQueryBack"));
            context.SaveChanges();
            Assert.IsTrue(dbSet.Any(m => m.Description == "SuccessfulInsertAndQueryBack"));
            Assert.IsTrue(dbSet.Any(m => m.TenantId == tenantId));
        }
        public async Task SuccessfullyRemoveEntityByIdAsync()
        {
            var connection = TestConfiguration.GetConnection();
            var tenantId   = TestConfiguration.GetTenantId();
            var context    = new MongoDbTenantContext(connection, tenantId);
            var dbSet      = new MongoDbTenantSet <TestModel>(context);

            var context2 = new MongoDbTenantContext(connection, tenantId + "-alt");
            var dbSet2   = new MongoDbTenantSet <TestModel>(context2);

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

            dbSet.Add(entity);
            await context.SaveChangesAsync();

            var entity2 = new TestModel
            {
                Description = "SuccessfullyRemoveEntityByIdAsync"
            };

            dbSet2.Add(entity2);
            await context2.SaveChangesAsync();

            dbSet = new MongoDbTenantSet <TestModel>(context);

            dbSet.RemoveById(entity.Id);

            //mismatched tenant, should not delete anything
            dbSet.RemoveById(entity2.Id);

            Assert.IsTrue(dbSet.Any(m => m.Description == "SuccessfullyRemoveEntityByIdAsync"));
            Assert.IsTrue(dbSet2.Any(m => m.Description == "SuccessfullyRemoveEntityByIdAsync"));
            await context.SaveChangesAsync();

            Assert.IsFalse(dbSet.Any(m => m.Description == "SuccessfullyRemoveEntityByIdAsync"));
            Assert.IsTrue(dbSet2.Any(m => m.Description == "SuccessfullyRemoveEntityByIdAsync"));
        }