예제 #1
0
        public void TestCreateBookAndCheckPartsOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptionsWithLogging <SqlEventsDbContext>(x => _output.WriteLine(x.Message));

            using (var context = new SqlEventsDbContext(options, null))
            {
                context.Database.EnsureCreated();
                var book = WithEventsEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                context.Add(book);
                context.SaveChanges();
            }
            using (var context = new SqlEventsDbContext(options, null))
            {
                //ATTEMPT
                var bookWithRelationships = context.Books
                                            .Include(p => p.AuthorsLink).ThenInclude(p => p.Author)
                                            .Include(p => p.Reviews)
                                            .Single();

                //VERIFY
                bookWithRelationships.AuthorsLink.Select(y => y.Author.Name).OrderBy(x => x).ToArray()
                .ShouldEqual(new[] { "Author1", "Author2" });
                bookWithRelationships.Reviews.Count().ShouldEqual(2);
            }
        }
        public static List <BookWithEvents> SeedDatabaseFourBooks(this SqlEventsDbContext context)
        {
            var fourBooks = CreateFourBooks();

            context.Books.AddRange(fourBooks);
            context.SaveChanges();
            return(fourBooks);
        }
예제 #3
0
        public void TestCreateDatabaseAndSeedOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptionsWithLogging <SqlEventsDbContext>(x => _output.WriteLine(x.Message));

            using (var context = new SqlEventsDbContext(options, null))
            {
                context.Database.EnsureCreated();

                //ATTEMPT
                context.SeedDatabaseFourBooks();

                //VERIFY
                context.Books.Count().ShouldEqual(4);
            }
        }
예제 #4
0
        public void TestBookRemoveReviewCausesEventOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlEventsDbContext>();

            using (var context = new SqlEventsDbContext(options, null))
            {
                context.Database.EnsureCreated();
                var book = WithEventsEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                context.Add(book);
                context.SaveChanges();
                book.GetBeforeSaveEventsThenClear();

                //ATTEMPT
                book.RemoveReview(book.Reviews.First().ReviewId);

                //VERIFY
                var dEvent = book.GetBeforeSaveEventsThenClear().Single();
                dEvent.ShouldBeType <BookReviewRemovedEvent>();
            }
        }
예제 #5
0
        public void TestAuthorChangeNameCausesEventOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlEventsDbContext>();

            using (var context = new SqlEventsDbContext(options, null))
            {
                context.Database.EnsureCreated();
                var book = WithEventsEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                context.Add(book);
                context.SaveChanges();
                var author = book.AuthorsLink.First().Author;
                author.GetBeforeSaveEventsThenClear();

                //ATTEMPT
                author.ChangeName("new name");

                //VERIFY
                var dEvent = author.GetBeforeSaveEventsThenClear().Single();
                dEvent.ShouldBeType <AuthorNameUpdatedEvent>();
            }
        }
예제 #6
0
        public void TestCheckUpdateBookCachePropertiesOk()
        {
            //SETUP
            var sqlOptions = SqliteInMemory.CreateOptions <SqlEventsDbContext>();

            using (var context = new SqlEventsDbContext(sqlOptions, null))
            {
                context.Database.EnsureCreated();

                var books = DddEfTestData.CreateDummyBooksWithEvents(2);
                books[0].AuthorsOrdered = null;
                context.AddRange(books);
                context.SaveChanges();

                var service = new HardResetCacheService(context);

                //ATTEMPT
                var status = service.CheckUpdateBookCacheProperties();

                //VERIFY
                status.Message.ShouldEqual("Processed 2 books and 2 errors found. See returned string for details");
                _output.WriteLine(status.Result);
            }
        }
예제 #7
0
 public SqlEventsListBooksService(SqlEventsDbContext context)
 {
     _context = context;
 }
 public AuthorNameUpdatedHandler(SqlEventsDbContext context)
 {
     _context = context;
 }
 public BookEventsFilterDropdownService(SqlEventsDbContext db)
 {
     _db = db;
 }
예제 #10
0
 public HardResetCacheService(SqlEventsDbContext context)
 {
     _context = context;
 }
 public static void SeedDatabaseDummyBooks(this SqlEventsDbContext context, int numBooks = 10, bool stepByYears = false)
 {
     context.Books.AddRange(CreateDummyBooks(numBooks, stepByYears));
     context.SaveChanges();
 }