public void SuccessfullyAttachUntrackedEntities() { var connection = TestConfiguration.GetConnection(); var tenantId = TestConfiguration.GetTenantId(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <DbSetModel>(context); var entities = new[] { new DbSetModel { Id = "abcd" }, new DbSetModel { Id = "efgh" } }; dbSet.AddRange(entities); context.SaveChanges(); ResetMongoDb(); context = new MongoDbTenantContext(connection, tenantId); dbSet = new MongoDbTenantSet <DbSetModel>(context); var result = dbSet.AsNoTracking().ToList(); context.AttachRange(result); Assert.AreEqual(MongoFramework.Infrastructure.EntityEntryState.NoChanges, context.ChangeTracker.GetEntry(result[0]).State); Assert.AreEqual(MongoFramework.Infrastructure.EntityEntryState.NoChanges, context.ChangeTracker.GetEntry(result[1]).State); }
public void AttachRejectsMismatchedEntities() { var connection = TestConfiguration.GetConnection(); var tenantId = TestConfiguration.GetTenantId(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <DbSetModel>(context); var entities = new[] { new DbSetModel { Id = "abcd" }, new DbSetModel { Id = "efgh" } }; dbSet.AddRange(entities); context.SaveChanges(); ResetMongoDb(); context = new MongoDbTenantContext(connection, tenantId); dbSet = new MongoDbTenantSet <DbSetModel>(context); var result = dbSet.AsNoTracking().ToList(); result[0].TenantId = tenantId + "a"; Assert.ThrowsException <MultiTenantException>(() => context.AttachRange(result)); }
public void SuccessfullyBlocksRemoveRange() { 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 = "SuccessfullyBlocksRemoveRange.1" }, new TestModel { Description = "SuccessfullyBlocksRemoveRange.2" } }; dbSet.AddRange(entities); context.SaveChanges(); dbSet = new MongoDbTenantSet <TestModel>(context); entities[0].TenantId = "qweasd"; entities[1].TenantId = "qweasd"; Assert.ThrowsException <MultiTenantException>(() => dbSet.RemoveRange(entities)); }
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 SuccessfullyBlocksNulls() { var connection = TestConfiguration.GetConnection(); var tenantId = TestConfiguration.GetTenantId(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <TestModel>(context); Assert.ThrowsException <ArgumentNullException>(() => dbSet.Add(null)); Assert.ThrowsException <ArgumentNullException>(() => dbSet.AddRange(null)); Assert.ThrowsException <ArgumentNullException>(() => dbSet.Update(null)); Assert.ThrowsException <ArgumentNullException>(() => dbSet.UpdateRange(null)); }
public void SuccessfullyRemoveRangeByPredicate() { 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 entities = new[] { new TestModel { Description = "SuccessfullyRemoveRangeByPredicate" }, new TestModel { Description = "SuccessfullyRemoveRangeByPredicate", BooleanField = true } }; var entities2 = new[] { new TestModel { Description = "SuccessfullyRemoveRangeByPredicate" }, new TestModel { Description = "SuccessfullyRemoveRangeByPredicate", BooleanField = true } }; dbSet.AddRange(entities); dbSet2.AddRange(entities2); context.SaveChanges(); context2.SaveChanges(); dbSet = new MongoDbTenantSet <TestModel>(context); dbSet.RemoveRange(e => e.BooleanField); Assert.AreEqual(2, dbSet.Count(m => m.Description == "SuccessfullyRemoveRangeByPredicate")); Assert.AreEqual(2, dbSet2.Count(m => m.Description == "SuccessfullyRemoveRangeByPredicate")); context.SaveChanges(); Assert.AreEqual(1, dbSet.Count(m => m.Description == "SuccessfullyRemoveRangeByPredicate")); Assert.AreEqual(2, dbSet2.Count(m => m.Description == "SuccessfullyRemoveRangeByPredicate")); Assert.IsNotNull(dbSet.FirstOrDefault(m => m.Id == entities[0].Id)); }
public async Task MinAsync_NoValues() { var tenantId = TestConfiguration.GetTenantId(); var connection = TestConfiguration.GetConnection(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <QueryableAsyncModel>(context); dbSet.AddRange(GetModels()); context.SaveChanges(); var context2 = new MongoDbTenantContext(connection, tenantId + "-2"); var dbSet2 = new MongoDbTenantSet <QueryableAsyncModel>(context2); await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await dbSet2.Select(e => e.IntNumber).MinAsync()); }
public async Task SingleOrDefaultAsync_NoValue() { var tenantId = TestConfiguration.GetTenantId(); var connection = TestConfiguration.GetConnection(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <QueryableAsyncModel>(context); dbSet.AddRange(GetModels()); context.SaveChanges(); var context2 = new MongoDbTenantContext(connection, tenantId + "-2"); var dbSet2 = new MongoDbTenantSet <QueryableAsyncModel>(context2); Assert.IsNull(await dbSet2.SingleOrDefaultAsync()); }
public void SuccessfulLimitsQueryToTenant() { 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 entities = new[] { new TestModel { Description = "SuccessfulLimitsQueryToTenant.1" }, new TestModel { Description = "SuccessfulLimitsQueryToTenant.2", BooleanField = true } }; var entities2 = new[] { new TestModel { Description = "SuccessfulLimitsQueryToTenant.1" }, new TestModel { Description = "SuccessfulLimitsQueryToTenant.2", BooleanField = true } }; dbSet.AddRange(entities); dbSet2.AddRange(entities2); context.SaveChanges(); context2.SaveChanges(); Assert.AreEqual(2, dbSet.Count()); Assert.AreEqual(2, dbSet2.Count()); Assert.AreEqual(1, dbSet.Where(e => e.BooleanField).Count()); Assert.AreEqual(1, dbSet2.Where(e => e.BooleanField).Count()); }
private MongoDbTenantSet <QueryableAsyncModel> SetupTwoTenantsData(string tenantId) { var connection = TestConfiguration.GetConnection(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <QueryableAsyncModel>(context); var context2 = new MongoDbTenantContext(connection, tenantId + "-2"); var dbSet2 = new MongoDbTenantSet <QueryableAsyncModel>(context2); dbSet.AddRange(GetModels()); context.SaveChanges(); dbSet2.AddRange(GetModels()); context2.SaveChanges(); return(dbSet); }
public async Task AnyAsync_NoValues() { var tenantId = TestConfiguration.GetTenantId(); var connection = TestConfiguration.GetConnection(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <QueryableAsyncModel>(context); dbSet.AddRange(GetModels()); context.SaveChanges(); var context2 = new MongoDbTenantContext(connection, tenantId + "-2"); var dbSet2 = new MongoDbTenantSet <QueryableAsyncModel>(context2); var result = await dbSet2.AnyAsync(); Assert.IsFalse(result); }
public void SearchTextTenant() { var connection = TestConfiguration.GetConnection(); var context = new MongoDbTenantContext(connection, TestConfiguration.GetTenantId()); var dbSet = new MongoDbTenantSet <SearchTextTenantModel>(context); var models = new SearchTextTenantModel[] { new SearchTextTenantModel { MiscField = 1, Text = "The quick brown fox jumps over the lazy dog." }, new SearchTextTenantModel { MiscField = 2, Text = "The five boxing wizards jump quickly." }, new SearchTextTenantModel { MiscField = 3, Text = "The quick brown fox jumps over the lazy dog." }, new SearchTextTenantModel { MiscField = 4, Text = "Jived fox nymph grabs quick waltz." }, }; dbSet.AddRange(models); context.SaveChanges(); //add some extras to ensure only our tenant's results are coming back. var context2 = new MongoDbTenantContext(connection, "second"); var dbSet2 = new MongoDbTenantSet <SearchTextTenantModel>(context); dbSet2.AddRange(models); context2.SaveChanges(); Assert.AreEqual(4, dbSet.SearchText("quick").Count()); Assert.AreEqual(0, dbSet.SearchText("the").Count()); //Stop words aren't used in text indexes: https://docs.mongodb.com/manual/core/index-text/#supported-languages-and-stop-words Assert.AreEqual(2, dbSet.SearchText("dog").Count()); Assert.AreEqual(1, dbSet.SearchText("jived").Count()); Assert.AreEqual(1, dbSet.SearchText("quick").Where(e => e.MiscField == 3).Count()); }
public async Task SingleOrDefaultAsync_HasValue() { var tenantId = TestConfiguration.GetTenantId(); var connection = TestConfiguration.GetConnection(); var context = new MongoDbTenantContext(connection, tenantId); var dbSet = new MongoDbTenantSet <QueryableAsyncModel>(context); dbSet.AddRange(GetModels()); context.SaveChanges(); var context2 = new MongoDbTenantContext(connection, tenantId + "-2"); var dbSet2 = new MongoDbTenantSet <QueryableAsyncModel>(context2); dbSet2.Add(new QueryableAsyncModel { Title = "SingleOrDefaultAsync_HasValue.1" }); context2.SaveChanges(); var result = await dbSet2.SingleOrDefaultAsync(); Assert.AreEqual("SingleOrDefaultAsync_HasValue.1", result.Title); }