public async Task CommitAsync_Should_Commit_The_Transaction() { // PREPARATION var options = new DbContextOptions <TestDbContext>(new MongoDB.Driver.MongoUrl(mongo2GoRunnerFixture.ConnectionString)); var dbContext = new TestDbContext(options); dbContext.Database.DropCollection("SampleEntity"); dbContext.Database.Client.DropDatabase("test"); dbContext.Database.CreateCollection("SampleEntity"); await dbContext.BeginTransactionAsync(); // EXECUTION dbContext.SampleEntities.InsertOne(dbContext.SessionHandler, new SampleEntity() { Name = "TEST", _id = Guid.NewGuid() }); await dbContext.CommitAsync(); // ASSERTION var result = dbContext.Database.GetCollection <SampleEntity>("SampleEntity").AsQueryable().ToList(); Assert.Collection(result, t => { Assert.Equal("TEST", t.Name); }); // CLEANUP dbContext.Dispose(); dbContext.Dispose(); }
public async void CommitAsync_Should_SaveChanges() { // Preparation var sqliteConnection = new SqliteConnection("DataSource=:memory:"); sqliteConnection.Open(); var options = new Microsoft.EntityFrameworkCore.DbContextOptionsBuilder().UseSqlite(sqliteConnection).Options; var dbContext = new TestDbContext(options); dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated(); dbContext.Database.Migrate(); await dbContext.BeginTransactionAsync(); // EXECUTION dbContext.Samples.Add(new SampleEntity() { UniqueId = Guid.Empty, Name = "Test" }); await dbContext.CommitAsync(); // ASSERTION var cmd = sqliteConnection.CreateCommand(); cmd.CommandText = "SELECT * FROM sample"; var DataAssetionHitted = false; using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { if (DataAssetionHitted) { Assert.False(DataAssetionHitted, "More that one record exists"); } Assert.Equal("Test", (string)reader["Name"]); DataAssetionHitted = true; } } if (!DataAssetionHitted) { Assert.True(DataAssetionHitted, "No record found in database!"); } Assert.Null(dbContext.Database.CurrentTransaction); // Cleaning sqliteConnection.Close(); }
public async Task CommitAsync_Should_Throw_If_No_Transaction_Initiated() { // PREPARATION var options = new DbContextOptions <TestDbContext>(new MongoDB.Driver.MongoUrl(mongo2GoRunnerFixture.ConnectionString)); var dbContext = new TestDbContext(options); dbContext.Database.DropCollection("SampleEntity"); dbContext.Database.Client.DropDatabase("test"); dbContext.Database.CreateCollection("SampleEntity"); // EXECUTION AND ASSERTION await Assert.ThrowsAsync <InvalidOperationException>(() => dbContext.CommitAsync()); // CLEANUP dbContext.Dispose(); }
public async void CommitAsync_Should_Throws_If_No_Transaction_Initiated() { // Preparation var sqliteConnection = new SqliteConnection("DataSource=:memory:"); sqliteConnection.Open(); var options = new Microsoft.EntityFrameworkCore.DbContextOptionsBuilder().UseSqlite(sqliteConnection).Options; var dbContext = new TestDbContext(options); dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated(); dbContext.Database.Migrate(); // EXECUTION AND ASSERTION await Assert.ThrowsAsync <InvalidOperationException>(() => dbContext.CommitAsync()); // Cleaning sqliteConnection.Close(); }