public void UpdateEntity() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <EntityWriterModel>(); var writer = new DbEntityWriter <EntityWriterModel>(database); var reader = new DbEntityReader <EntityWriterModel>(database); //Get entity initially into the DB so we can update it var entity = new EntityWriterModel { Title = "DbEntityWriterTests.UpdateEntity" }; entityContainer.Update(entity, DbEntityEntryState.Added); writer.Write(entityContainer); entityContainer.Clear(); //Our updated entity with the same ID var updatedEntity = new EntityWriterModel { Id = entity.Id, Title = "DbEntityWriterTests.UpdateEntity-Updated" }; entityContainer.Update(updatedEntity, DbEntityEntryState.Updated); writer.Write(entityContainer); var dbEntity = reader.AsQueryable().Where(e => e.Id == entity.Id).FirstOrDefault(); Assert.AreEqual("DbEntityWriterTests.UpdateEntity-Updated", dbEntity.Title); }
public void EntityProcessorsNotFiredWhenNotTEntity() { var database = TestConfiguration.GetDatabase(); new EntityMapper <MongoFrameworkQueryableModel>(); var collection = database.GetCollection <MongoFrameworkQueryableModel>("MongoFrameworkQueryableModel"); var underlyingQueryable = collection.AsQueryable(); var queryable = new MongoFrameworkQueryable <MongoFrameworkQueryableModel, MongoFrameworkQueryableModel>(underlyingQueryable); var processor = new TestProcessor <MongoFrameworkQueryableModel>(); queryable.EntityProcessors.Add(processor); var entityContainer = new DbEntityCollection <MongoFrameworkQueryableModel>(); var writer = new DbEntityWriter <MongoFrameworkQueryableModel>(database); entityContainer.Update(new MongoFrameworkQueryableModel { Title = "EntityProcessorNoFireTest" }, DbEntityEntryState.Added); writer.Write(entityContainer); foreach (var titles in queryable.Select(e => e.Title)) { //Do nothing } Assert.IsFalse(processor.EntityProcessed); }
public void AddMixedTypeEntities() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <EntityWriterModel>(); var writer = new DbEntityWriter <EntityWriterModel>(database); var entities = new[] { new EntityWriterModel { Title = "DbEntityWriterTests.AddMixedTypeEntities" }, new ExtendedEntityWriterModel { Title = "DbEntityWriterTests.AddMixedTypeEntities", AdditionalField = "AdditionalFieldSet" } }; foreach (var entity in entities) { entityContainer.Update(entity, DbEntityEntryState.Added); } writer.Write(entityContainer); Assert.IsTrue(entities.OfType <EntityWriterModel>().Any(e => e.Title == "DbEntityWriterTests.AddMixedTypeEntities")); Assert.IsTrue(entities.OfType <ExtendedEntityWriterModel>().Any(e => e.AdditionalField == "AdditionalFieldSet")); }
public void LoadRelationship() { var database = TestConfiguration.GetDatabase(); var relatedEntity = new StringIdModel { Description = "LoadRelationship-RelatedItem" }; var dbEntityWriter = new DbEntityWriter <StringIdModel>(database); var collection = new DbEntityCollection <StringIdModel> { relatedEntity }; dbEntityWriter.Write(collection); var entity = new SingleEntityIntegrationModel { RelatedItemId = relatedEntity.Id }; var entityMapper = new EntityMapper <SingleEntityIntegrationModel>(); new NavigationPropertyMutator <SingleEntityIntegrationModel>().MutateEntity(entity, MutatorType.Select, entityMapper, database); Assert.AreEqual("LoadRelationship-RelatedItem", entity.RelatedItem.Description); }
public void WhereIdMatchesGuids() { var database = TestConfiguration.GetDatabase(); var dbEntityWriter = new DbEntityWriter <WhereIdMatchesGuidModel>(database); var entityCollection = new DbEntityCollection <WhereIdMatchesGuidModel> { new WhereIdMatchesGuidModel { Description = "1" }, new WhereIdMatchesGuidModel { Description = "2" }, new WhereIdMatchesGuidModel { Description = "3" }, new WhereIdMatchesGuidModel { Description = "4" } }; dbEntityWriter.Write(entityCollection); var collection = TestConfiguration.GetDatabase().GetCollection <WhereIdMatchesGuidModel>("WhereIdMatchesGuidModel"); var underlyingQueryable = collection.AsQueryable(); var queryable = new MongoFrameworkQueryable <WhereIdMatchesGuidModel, WhereIdMatchesGuidModel>(underlyingQueryable); var entityIds = entityCollection.Select(e => e.Id).Take(2); var idMatchQueryable = LinqExtensions.WhereIdMatches(queryable, entityIds); Assert.AreEqual(2, idMatchQueryable.Count()); Assert.IsTrue(idMatchQueryable.ToList().All(e => entityIds.Contains(e.Id))); }
public void ReadMixedEntities() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <A>(); var reader = new DbEntityReader <A>(database); var writer = new DbEntityWriter <A>(database); entityContainer.Update(new A { Description = "DbEntityReaderTests.ReadMixedEntities" }, DbEntityEntryState.Added); entityContainer.Update(new B { BIsForBoolean = true, Description = "DbEntityReaderTests.ReadMixedEntities" }, DbEntityEntryState.Added); writer.Write(entityContainer); var readMixedEntitiesQuery = reader.AsQueryable().Where(e => e.Description == "DbEntityReaderTests.ReadMixedEntities"); Assert.AreEqual(2, readMixedEntitiesQuery.Count()); Assert.AreEqual(2, readMixedEntitiesQuery.OfType <A>().Count()); Assert.AreEqual(1, readMixedEntitiesQuery.OfType <B>().Count()); }
public void ValidObjectId() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <MongoDbUtilityModel>(); var writer = new DbEntityWriter <MongoDbUtilityModel>(database); var entity = new MongoDbUtilityModel(); entityContainer.Update(entity, DbEntityEntryState.Added); writer.Write(entityContainer); Assert.IsTrue(MongoDbUtility.IsValidObjectId(entity.Id)); }
public void AddEntity() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <EntityWriterModel>(); var writer = new DbEntityWriter <EntityWriterModel>(database); var entity = new EntityWriterModel { Title = "DbEntityWriterTests.AddEntity" }; entityContainer.Update(entity, DbEntityEntryState.Added); writer.Write(entityContainer); Assert.IsNotNull(entity.Id); }
/// <summary> /// Initialise a new entity reader and writer to the specified database. /// </summary> /// <param name="database"></param> public void SetDatabase(IMongoDatabase database) { Database = database; var entityMapper = new EntityMapper <TEntity>(); EntityWriter = new DbEntityWriter <TEntity>(database, entityMapper); EntityReader = new DbEntityReader <TEntity>(database, entityMapper); //TODO: Look at this again in the future, this seems unnecessarily complex var indexMapper = new EntityIndexMapper <TEntity>(entityMapper); var collection = database.GetCollection <TEntity>(entityMapper.GetCollectionName()); EntityIndexWriter = new EntityIndexWriter <TEntity>(collection, indexMapper); EntityRelationshipWriter = new EntityRelationshipWriter <TEntity>(database, entityMapper); }
public async Task MixedActionWriteAsync() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <EntityWriterModel>(); var writer = new DbEntityWriter <EntityWriterModel>(database); var reader = new DbEntityReader <EntityWriterModel>(database); var updateEntity = new EntityWriterModel { Title = "DbEntityWriterTests.MixedActionWriteAsync-UpdateEntity" }; var deleteEntity = new EntityWriterModel { Title = "DbEntityWriterTests.MixedActionWriteAsync-DeleteEntity" }; entityContainer.Update(updateEntity, DbEntityEntryState.Added); entityContainer.Update(deleteEntity, DbEntityEntryState.Added); await writer.WriteAsync(entityContainer).ConfigureAwait(false); entityContainer.Clear(); var addedEntity = new EntityWriterModel { Title = "DbEntityWriterTests.MixedActionWriteAsync-AddEntity" }; updateEntity.Title = "DbEntityWriterTests.MixedActionWriteAsync-UpdateEntity-Updated"; entityContainer.Update(addedEntity, DbEntityEntryState.Added); entityContainer.Update(updateEntity, DbEntityEntryState.Updated); entityContainer.Update(deleteEntity, DbEntityEntryState.Deleted); await writer.WriteAsync(entityContainer).ConfigureAwait(false); Assert.IsTrue(reader.AsQueryable().Where(e => e.Id == addedEntity.Id).Any()); Assert.IsFalse(reader.AsQueryable().Where(e => e.Id == deleteEntity.Id).Any()); var dbEntity = reader.AsQueryable().Where(e => e.Id == updateEntity.Id).FirstOrDefault(); Assert.AreEqual("DbEntityWriterTests.MixedActionWriteAsync-UpdateEntity-Updated", dbEntity.Title); }
public void EnumerateQueryable() { var database = TestConfiguration.GetDatabase(); new EntityMapper <MongoFrameworkQueryableModel>(); var collection = database.GetCollection <MongoFrameworkQueryableModel>("MongoFrameworkQueryableModel"); var underlyingQueryable = collection.AsQueryable(); var queryable = new MongoFrameworkQueryable <MongoFrameworkQueryableModel, MongoFrameworkQueryableModel>(underlyingQueryable); var entityContainer = new DbEntityCollection <MongoFrameworkQueryableModel>(); var writer = new DbEntityWriter <MongoFrameworkQueryableModel>(database); entityContainer.Update(new MongoFrameworkQueryableModel { Title = "EnumerateQueryable" }, DbEntityEntryState.Added); writer.Write(entityContainer); foreach (var entity in queryable) { Assert.AreEqual("EnumerateQueryable", entity.Title); } }
public void RemoveEntity() { var database = TestConfiguration.GetDatabase(); var entityContainer = new DbEntityCollection <EntityWriterModel>(); var writer = new DbEntityWriter <EntityWriterModel>(database); var reader = new DbEntityReader <EntityWriterModel>(database); //Get entity initially into the DB so we can remove it var entity = new EntityWriterModel { Title = "DbEntityWriterTests.RemoveEntity" }; entityContainer.Update(entity, DbEntityEntryState.Added); writer.Write(entityContainer); entityContainer.Clear(); //Remove the entity entityContainer.Update(entity, DbEntityEntryState.Deleted); writer.Write(entityContainer); Assert.IsFalse(reader.AsQueryable().Any(e => e.Id == entity.Id)); }