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); } }
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(); }
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); } }
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); } }