コード例 #1
0
        public async Task TestSaveChangesAsyncAddNoSqlOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                nameof(TestSqlSaveChanges));


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    await sqlContext.Database.EnsureCreatedAsync();

                    await noSqlContext.Database.EnsureCreatedAsync();

                    //ATTEMPT
                    var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                    sqlContext.Add(book);
                    await sqlContext.SaveChangesAsync();

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(1);
                    var noSqlBook = noSqlContext.Books.SingleOrDefault(p => p.BookId == book.BookId);
                    noSqlBook.ShouldNotBeNull();
                    noSqlBook.AuthorsOrdered.ShouldEqual("Author1, Author2");
                    noSqlBook.ReviewsCount.ShouldEqual(2);
                }
        }
コード例 #2
0
        public async Task TestSaveChangesDeleteNoSqlOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                GetType().Name);


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    sqlContext.Database.EnsureCreated();
                    noSqlContext.Database.EnsureCreated();
                    var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                    sqlContext.Add(book);
                    await sqlContext.SaveChangesAsync();

                    //ATTEMPT
                    sqlContext.Remove(book);
                    await sqlContext.SaveChangesAsync();

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(0);
                    var noSqlBook = noSqlContext.Books.SingleOrDefault(p => p.BookId == book.BookId);
                    noSqlBook.ShouldBeNull();
                }
        }
コード例 #3
0
        public void TestSaveChangesSoftDeleteNoSqlOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                nameof(TestSqlSaveChanges));


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    sqlContext.Database.EnsureCreated();
                    noSqlContext.Database.EnsureCreated();
                    var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                    sqlContext.Add(book);
                    sqlContext.SaveChanges();

                    //ATTEMPT
                    book.SoftDeleted = true;
                    sqlContext.SaveChanges();

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(0);
                    sqlContext.Books.IgnoreQueryFilters().Count().ShouldEqual(1);
                    var noSqlBook = noSqlContext.Books.SingleOrDefault(p => p.BookId == book.BookId);
                    noSqlBook.ShouldBeNull();
                }
        }
コード例 #4
0
        public async Task TestSaveChangesAsyncUpdatesNoSqlFail()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                "UNKNOWNDATABASENAME");


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    await sqlContext.Database.EnsureCreatedAsync();

                    //ATTEMPT
                    var book = DddEfTestData.CreateDummyBookOneAuthor();
                    sqlContext.Add(book);
                    var ex = await Assert.ThrowsAsync <CosmosException>(async() => await sqlContext.SaveChangesAsync());

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(0);
                    ex.Message.ShouldStartWith("Response status code does not indicate success: 404 Substatus:");
                }
        }
コード例 #5
0
        public async Task TestNoSqlBookUpdaterFail_NoBookAddedToSqlDatabase()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                "UNKNOWNDATASBASENAME");


            using (var sqlContext = new SqlDbContext(_sqlOptions))
                using (var noSqlContext = new NoSqlDbContext(builder.Options))
                {
                    await sqlContext.Database.EnsureCreatedAsync();

                    var updater = new NoSqlBookUpdater(noSqlContext);

                    //ATTEMPT
                    var book = DddEfTestData.CreateDummyBookOneAuthor();
                    sqlContext.Add(book);
                    var hasUpdates = updater.FindBookChangesToProjectToNoSql(sqlContext);
                    var ex         = await Assert.ThrowsAsync <HttpException>(async() =>
                                                                              await updater.CallBaseSaveChangesWithNoSqlWriteInTransactionAsync(sqlContext, () => sqlContext.SaveChangesAsync()));

                    //VERIFY
                    ex.Message.ShouldEqual("NotFound");
                    hasUpdates.ShouldBeTrue();
                    sqlContext.Books.Count().ShouldEqual(0);
                }
        }
コード例 #6
0
        public async Task TestNoSqlBookUpdaterOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                GetType().Name);


            using var sqlContext   = new SqlDbContext(_sqlOptions);
            using var noSqlContext = new NoSqlDbContext(builder.Options);

            await sqlContext.Database.EnsureCreatedAsync();

            await noSqlContext.Database.EnsureCreatedAsync();

            var updater = new NoSqlBookUpdater(noSqlContext);

            //ATTEMPT
            var book = DddEfTestData.CreateDummyBookOneAuthor();

            sqlContext.Add(book);
            var numBooksChanged = updater.FindNumBooksChanged(sqlContext);
            await updater.CallBaseSaveChangesWithNoSqlWriteInTransactionAsync(sqlContext, numBooksChanged,
                                                                              () => sqlContext.SaveChangesAsync());

            //VERIFY
            numBooksChanged.ShouldEqual(1);
            sqlContext.Books.Count().ShouldEqual(1);
            noSqlContext.Books.Find(book.BookId).ShouldNotBeNull();
        }
コード例 #7
0
        public async Task TestNoSqlBookUpdaterOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                nameof(TestNoSqlBookUpdaterAsync));


            using (var sqlContext = new SqlDbContext(_sqlOptions))
                using (var noSqlContext = new NoSqlDbContext(builder.Options))
                {
                    await sqlContext.Database.EnsureCreatedAsync();

                    await noSqlContext.Database.EnsureCreatedAsync();

                    var updater = new NoSqlBookUpdater(noSqlContext);

                    //ATTEMPT
                    var book = DddEfTestData.CreateDummyBookOneAuthor();
                    sqlContext.Add(book);
                    var hasUpdates = updater.FindBookChangesToProjectToNoSql(sqlContext);
                    await updater.CallBaseSaveChangesWithNoSqlWriteInTransactionAsync(sqlContext, () => sqlContext.SaveChangesAsync());

                    //VERIFY
                    hasUpdates.ShouldBeTrue();
                    sqlContext.Books.Count().ShouldEqual(1);
                    (await noSqlContext.Books.CountAsync(p => p.BookId == book.BookId)).ShouldEqual(1);
                }
        }
コード例 #8
0
        public async Task TestNoSqlBookUpdaterFail_NoBookAddedToSqlDatabase()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                "UNKNOWNDATASBASENAME");


            using (var sqlContext = new SqlDbContext(_sqlOptions))
                using (var noSqlContext = new NoSqlDbContext(builder.Options))
                {
                    await sqlContext.Database.EnsureCreatedAsync();

                    var updater = new NoSqlBookUpdater(noSqlContext);

                    //ATTEMPT
                    var book = DddEfTestData.CreateDummyBookOneAuthor();
                    sqlContext.Add(book);
                    var numBooksChanged = updater.FindNumBooksChanged(sqlContext);
                    var ex = await Assert.ThrowsAsync <CosmosException>(async() =>
                                                                        await updater.CallBaseSaveChangesWithNoSqlWriteInTransactionAsync(sqlContext, numBooksChanged,
                                                                                                                                          () => sqlContext.SaveChangesAsync()));

                    //VERIFY
                    ex.Message.ShouldStartWith("Response status code does not indicate success: 404 Substatus:");
                    numBooksChanged.ShouldEqual(1);
                    sqlContext.Books.Count().ShouldEqual(0);
                }
        }
コード例 #9
0
        public void TestAverageReviewSqlServerOk()
        {
            //SETUP
            var options = this.CreateUniqueClassOptionsWithLogging <SqlDbContext>(
                log => _output.WriteLine(log.Message));

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

                var book = DddEfTestData.CreateDummyBookOneAuthor();
                book.AddReview(5, "test", "test");
                context.Add(book);
                context.SaveChanges();

                //ATTEMPT
                var aveReviews = context.Books
                                 .Select(p => p.Reviews.Select(y => (double?)y.NumStars).Average())
                                 .Single();

                //VERIFY

                aveReviews.ShouldEqual(5);
            }
        }
コード例 #10
0
        public async Task TestSaveChangesIndirectUpdatesNoSqlOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                GetType().Name);


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    sqlContext.Database.EnsureCreated();
                    noSqlContext.Database.EnsureCreated();
                    var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                    sqlContext.Add(book);
                    await sqlContext.SaveChangesAsync();
                }
            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    //ATTEMPT
                    var book = sqlContext.Books.Include(x => x.Reviews).Single();
                    book.AddReview(5, "xxx", "yyy");
                    await sqlContext.SaveChangesAsync();

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(1);
                    var noSqlBook = noSqlContext.Books.Single(p => p.BookId == book.BookId);
                    noSqlBook.AuthorsOrdered.ShouldEqual("Author1, Author2");
                    noSqlBook.ReviewsCount.ShouldEqual(3);
                }
        }
コード例 #11
0
        public void TestSaveChangesUpdatesNoSqlFail()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                "UNKNOWNDATABASENAME");


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    sqlContext.Database.EnsureCreated();

                    //ATTEMPT
                    var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                    sqlContext.Add(book);
                    var ex = Assert.Throws <WebException>(() => sqlContext.SaveChanges());

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(0);
                }
        }
コード例 #12
0
        public void TestSerializeFourBooks()
        {
            //SETUP
            var books = DddEfTestData.CreateFourBooks();

            //ATTEMPT
            var jsonString = books.DefaultSerializeToJson();

            //VERIFY
        }
コード例 #13
0
        public void TestProjectionMappingBookTitle()
        {
            //SETUP
            var wrappedMapper = AutoMapperHelpers.CreateWrapperMapper <Book, BookTitle>();

            //ATTEMPT
            var input = DddEfTestData.CreateFourBooks().AsQueryable();
            var list  = input.ProjectTo <BookTitle>(wrappedMapper.MapperReadConfig).ToList();

            //VERIFY
            list.First().Title.ShouldEqual("Refactoring");
        }
コード例 #14
0
        public void TestDirectMappingBookTitle()
        {
            //SETUP
            var wrappedMapper = AutoMapperHelpers.CreateWrapperMapper <Book, BookTitle>();

            //ATTEMPT
            var input = DddEfTestData.CreateFourBooks().First();
            var data  = wrappedMapper.MapperSaveConfig.CreateMapper().Map <BookTitle>(input);

            //VERIFY
            data.Title.ShouldEqual("Refactoring");
        }
コード例 #15
0
        public void TestBuildCallNoParameters()
        {
            //SETUP 
            var method = typeof(Book).GetMethod(nameof(Book.RemovePromotion));
            var target = DddEfTestData.CreateFourBooks().Last();

            //ATTEMPT
            var action = BuildCall.CallMethodReturnVoid(method, typeof(Tests.Dtos.ChangePubDateDto), typeof(Book), new List<PropertyMatch>());
            action.Invoke(target);

            //VERIFY
            target.ActualPrice.ShouldEqual(target.OrgPrice);
        }
コード例 #16
0
        public void TestProjectionMappingBookTitleAndCount()
        {
            //SETUP
            var genSerConfig = new BookTitleAndCountConfig();
            var mapperConfig = AutoMapperHelpers.CreateReadConfig <Book, BookTitleAndCount>(genSerConfig.AlterReadMapping);

            //ATTEMPT
            var input = DddEfTestData.CreateFourBooks().AsQueryable();
            var list  = input.ProjectTo <BookTitleAndCount>(mapperConfig).ToList();

            //VERIFY
            list.Last().Title.ShouldEqual("Quantum Networking");
            list.Last().ReviewsCount.ShouldEqual(2);
        }
コード例 #17
0
        public void TestDirectMappingBookTitleAndCount()
        {
            //SETUP
            var genSerConfig = new BookTitleAndCountConfig();
            var mapperConfig = AutoMapperHelpers.CreateReadConfig <Book, BookTitleAndCount>(genSerConfig.AlterReadMapping);

            //ATTEMPT
            var input = DddEfTestData.CreateFourBooks().Last();
            var data  = mapperConfig.CreateMapper().Map <BookTitleAndCount>(input);

            //VERIFY
            data.Title.ShouldEqual("Quantum Networking");
            data.ReviewsCount.ShouldEqual(2);
        }
コード例 #18
0
        public void TestDirectMappingToBookNotSetPrivateSetter()
        {
            //SETUP
            var wrappedMapper = AutoMapperHelpers.CreateWrapperMapper <BookTitle, Book>();
            var entity        = DddEfTestData.CreateFourBooks().First();

            //ATTEMPT
            var dto = new BookTitle {
                Title = "New Title"
            };
            var data = wrappedMapper.MapperSaveConfig.CreateMapper().Map(dto, entity);

            //VERIFY
            data.Title.ShouldEqual("Refactoring");
        }
コード例 #19
0
        public void TestBuildCallChangePubDateDto()
        {
            //SETUP 
            var prop = new PropertyMatch(true, PropertyMatch.TypeMatchLevels.Match, 
                typeof(Tests.Dtos.ChangePubDateDto).GetProperty(nameof(Tests.Dtos.ChangePubDateDto.PublishedOn)));
            var method = typeof(Book).GetMethod(nameof(Book.UpdatePublishedOn));
            var dto = new Tests.Dtos.ChangePubDateDto { PublishedOn = new DateTime(2000,1,1)};
            var target = DddEfTestData.CreateDummyBooks(1).Single();

            //ATTEMPT
            var action = BuildCall.CallMethodReturnVoid(method, typeof(Tests.Dtos.ChangePubDateDto), typeof(Book), new List<PropertyMatch>{prop});
            action.Invoke(dto, target);

            //VERIFY
            target.PublishedOn.ShouldEqual(new DateTime(2000, 1, 1));
        }
コード例 #20
0
        public void TestCreateOrderCorrectBookInfoOk()
        {
            //SETUP
            var book = DddEfTestData.CreateDummyBookOneAuthor();

            //ATTEMPT
            var lineItems = new List <OrderBooksDto> {
                new OrderBooksDto(book.BookId, book, 3)
            };
            var status = Order.CreateOrderFactory("user", DateTime.Today.AddDays(3), lineItems);

            //VERIFY
            status.HasErrors.ShouldBeFalse();
            status.Result.LineItems.Count().ShouldEqual(1);
            status.Result.LineItems.First().NumBooks.ShouldEqual((short)3);
            status.Result.LineItems.First().BookPrice.ShouldEqual(book.ActualPrice);
        }
コード例 #21
0
        public void TestChangeDeliveryDateOk()
        {
            //SETUP
            var book      = DddEfTestData.CreateDummyBookOneAuthor();
            var lineItems = new List <OrderBooksDto> {
                new OrderBooksDto(book.BookId, book, 3)
            };
            var order = Order.CreateOrder("user", DateTime.Today.AddDays(1), lineItems).Result;

            //ATTEMPT
            var newDeliverDate = DateTime.Today.AddDays(2);
            var status         = order.ChangeDeliveryDate("user", newDeliverDate);

            //VERIFY
            status.IsValid.ShouldBeTrue();
            order.ExpectedDeliveryDate.ShouldEqual(newDeliverDate);
        }
コード例 #22
0
        public void TestResetAndSerializeFourBooks()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <DddBookContext>();

            using (var context = new DddBookContext(options))
            {
                var books    = DddEfTestData.CreateFourBooks();
                var resetter = new DataResetter(context);
                resetter.ResetKeysEntityAndRelationships(books);

                //ATTEMPT
                var jsonString = books.DefaultSerializeToJson();

                //VERIFY
            }
        }
コード例 #23
0
        public TestScalarFunctions(ITestOutputHelper output)
        {
            _output = output;

            var options = this.CreateUniqueClassOptions <SqlDbContext>();

            using (var context = new SqlDbContext(options))
            {
                context.Database.EnsureCreated();
                var filepath = TestData.GetFilePath(@"..\..\EfCoreSqlAndCosmos\wwwroot\AddUserDefinedFunctions.sql");
                ApplyScriptsToDatabase.ExecuteScriptFileInTransaction(context, filepath);
                context.WipeAllDataFromDatabase();

                var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                context.Add(book);
                context.SaveChanges();
            }
        }
コード例 #24
0
        public void TestBookReadMappingsWithConfig()
        {
            //SETUP
            var maps = new MapperConfigurationExpression();

            //ATTEMPT
            var mapCreator = new CreateConfigGenerator(typeof(BookTitleAndCount), _bookInfo, new BookTitleAndCountConfig());

            mapCreator.Accessor.AddReadMappingToProfile(maps);

            //VERIFY
            var config = new MapperConfiguration(maps);
            var entity = DddEfTestData.CreateFourBooks().Last();
            var dto    = config.CreateMapper().Map <BookTitleAndCount>(entity);

            dto.Title.ShouldEqual("Quantum Networking");
            dto.ReviewsCount.ShouldEqual(2);
        }
コード例 #25
0
        public void TestAddBookOk()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <SqlDbContext>();

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

                //ATTEMPT
                context.Add(DddEfTestData.CreateDummyBookOneAuthor());
                var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context);

                //VERIFY
                changes.Single().BookId.ShouldNotEqual(Guid.Empty);
                changes.Single().State.ShouldEqual(EntityState.Added);
            }
        }
コード例 #26
0
        public void TestCreateOrderWithCorrectLineNumsOk()
        {
            //SETUP
            var book1 = DddEfTestData.CreateDummyBookOneAuthor();
            var book2 = DddEfTestData.CreateDummyBookOneAuthor();

            //ATTEMPT
            var bookOrders = new List <OrderBooksDto>()
            {
                new OrderBooksDto(book1.BookId, book1, 1), new OrderBooksDto(book2.BookId, book2, 2)
            };
            var status = Order.CreateOrderFactory("user", DateTime.Today.AddDays(3), bookOrders);

            //VERIFY
            status.HasErrors.ShouldBeFalse();
            status.Result.LineItems.Count().ShouldEqual(2);
            status.Result.LineItems.First().LineNum.ShouldEqual((byte)1);
            status.Result.LineItems.Last().LineNum.ShouldEqual((byte)2);
        }
コード例 #27
0
        public void TestChangeDeliveryDateOk()
        {
            //SETUP
            var book      = DddEfTestData.CreateDummyBookOneAuthor();
            var lineItems = new List <OrderBooksDto> {
                new OrderBooksDto(book.BookId, book, 3)
            };
            var order = Order.CreateOrderFactory("user", DateTime.Today.AddDays(1), lineItems).Result;

            //ATTEMPT
            var newDeliverDate = DateTime.Today.AddDays(2);

            if (newDeliverDate.DayOfWeek == DayOfWeek.Sunday)
            {
                newDeliverDate = newDeliverDate.AddDays(1);
            }
            var status = order.ChangeDeliveryDate("user", newDeliverDate);

            //VERIFY
            status.HasErrors.ShouldBeFalse();
            order.ExpectedDeliveryDate.ShouldEqual(newDeliverDate);
        }
コード例 #28
0
        public void TestSaveChangesDirectUpdatesNoSqlOk()
        {
            //SETUP
            var config  = AppSettings.GetConfiguration();
            var builder = new DbContextOptionsBuilder <NoSqlDbContext>()
                          .UseCosmos(
                config["endpoint"],
                config["authKey"],
                GetType().Name);


            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    sqlContext.Database.EnsureCreated();
                    noSqlContext.Database.EnsureCreated();
                    var book = DddEfTestData.CreateDummyBookTwoAuthorsTwoReviews();
                    sqlContext.Add(book);
                    sqlContext.SaveChanges();
                }
            using (var noSqlContext = new NoSqlDbContext(builder.Options))
                using (var sqlContext = new SqlDbContext(_sqlOptions, new NoSqlBookUpdater(noSqlContext)))
                {
                    //ATTEMPT
                    var book = sqlContext.Books.Single();
                    book.PublishedOn = DddEfTestData.DummyBookStartDate.AddDays(1);
                    sqlContext.SaveChanges();

                    //VERIFY
                    sqlContext.Books.Count().ShouldEqual(1);
                    var noSqlBook = noSqlContext.Books.Single(p => p.BookId == book.BookId);
                    noSqlBook.PublishedOn.ShouldEqual(DddEfTestData.DummyBookStartDate.AddDays(1));
                    noSqlBook.AuthorsOrdered.ShouldEqual("Author1, Author2");
                    noSqlBook.ReviewsCount.ShouldEqual(2);
                }
        }
コード例 #29
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);
            }
        }