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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }