public void TestDeleteBookOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlDbContext>();

            using (var context = new SqlDbContext(options))
            {
                context.Database.EnsureCreated();
                context.SeedDatabaseFourBooks();

                //ATTEMPT
                context.Remove(context.Books.First());
                var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context);

                //VERIFY
                changes.Single().BookId.ShouldNotEqual(Guid.Empty);
                changes.Single().State.ShouldEqual(EntityState.Deleted);
            }
        }
        public void TestUpdateDirectOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlDbContext>();

            using (var context = new SqlDbContext(options))
            {
                context.Database.EnsureCreated();
                context.SeedDatabaseFourBooks();
            }
            using (var context = new SqlDbContext(options))
            {
                //ATTEMPT
                var book = context.Books.First();
                book.AddPromotion(123, "now 123");
                var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context);

                //VERIFY
                changes.Single().BookId.ShouldNotEqual(Guid.Empty);
                changes.Single().State.ShouldEqual(EntityState.Modified);
            }
        }
        public void TestUpdateViaAuthorChangeTwoBooksOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlDbContext>();

            using (var context = new SqlDbContext(options))
            {
                context.Database.EnsureCreated();
                context.SeedDatabaseFourBooks();
            }
            using (var context = new SqlDbContext(options))
            {
                //ATTEMPT
                var author = context.Authors.Single(x => x.Name == "Martin Fowler");
                author.Name = "Different Name";
                var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context);

                //VERIFY
                changes.Count.ShouldEqual(2);
                changes.All(x => x.State == EntityState.Modified).ShouldBeTrue();
            }
        }
        public void TestUpdateViaAuthorChangeOneBookOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlDbContext>();

            using (var context = new SqlDbContext(options))
            {
                context.Database.EnsureCreated();
                context.SeedDatabaseFourBooks();
            }
            using (var context = new SqlDbContext(options))
            {
                //ATTEMPT
                var author = context.Authors.Single(x => x.Name == "Future Person");
                author.Name = "Different Name";
                var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context);

                //VERIFY
                changes.Single().BookId.ShouldNotEqual(Guid.Empty);
                changes.Single().State.ShouldEqual(EntityState.Modified);
            }
        }
        public void TestUpdateViaNonBookEntityOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlDbContext>();

            using (var context = new SqlDbContext(options))
            {
                context.Database.EnsureCreated();
                context.SeedDatabaseFourBooks();
            }
            using (var context = new SqlDbContext(options))
            {
                //ATTEMPT
                var book = context.Books.Include(x => x.Reviews).First();
                book.AddReview(5, "test", "test");
                var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context);

                //VERIFY
                changes.Single().BookId.ShouldNotEqual(Guid.Empty);
                changes.Single().State.ShouldEqual(EntityState.Modified);
            }
        }
Пример #6
0
 /// <summary>
 /// This MUST be called before SavChanges. It finds any Book changes
 /// </summary>
 /// <returns>true if there are BookChanges that need projecting to NoSQL database</returns>
 public bool FindBookChangesToProjectToNoSql(SqlDbContext sqlContext)
 {
     _bookChanges = BookChangeInfo.FindBookChanges(sqlContext.ChangeTracker.Entries().ToList(), sqlContext);
     return(_bookChanges.Any());
 }
Пример #7
0
 /// <summary>
 /// This MUST be called before SavChanges. It finds any Book changes
 /// </summary>
 /// <returns>true if there are BookChanges that need projecting to NoSQL database</returns>
 public int FindNumBooksChanged(SqlDbContext sqlContext)
 {
     _bookChanges = BookChangeInfo.FindBookChanges(sqlContext.ChangeTracker.Entries().ToList(), sqlContext);
     return(_bookChanges.Count());
 }