public async Task GivenExistingBooking_WhenDeleted_ShouldLeaveRecordInDeletedBookings() { var repository = BookingRepositoryTest.GetBookingRepositoryForTest(); var cruise = await CruiseRepositoryTest.GetCruiseForTestAsync(); var booking = await BookingRepositoryTest.GetNewlyCreatedBookingForTestAsync(cruise, repository); var paymentRepository = AecPaymentRepositoryTest.GetPaymentRepositoryForTest(); const decimal amountPaid = 10m; await paymentRepository.CreateAsync(booking, amountPaid); await repository.DeleteAsync(booking); var deletedBookingRepository = GetDeletedBookingRepositoryForTest(); var deleted = (await deletedBookingRepository.FindByReferenceAsync(booking.Reference)).FirstOrDefault(); Assert.IsNotNull(deleted); Assert.AreEqual(booking.CruiseId, deleted.CruiseId); Assert.AreEqual(booking.Reference, deleted.Reference); Assert.AreEqual(booking.FirstName, deleted.FirstName); Assert.AreEqual(booking.LastName, deleted.LastName); Assert.AreEqual(booking.Email, deleted.Email); Assert.AreEqual(booking.PhoneNo, deleted.PhoneNo); Assert.AreEqual(booking.TotalPrice, deleted.TotalPrice); Assert.AreEqual(amountPaid, deleted.AmountPaid); }
public async Task GivenExistingBooking_WhenDeleted_SubTablesShouldBeCleared() { var source = BookingRepositoryTest.GetSimpleBookingForTest(); source.Products.Add(BookingRepositoryTest.GetProductForTest()); var repository = BookingRepositoryTest.GetBookingRepositoryForTest(); var cruise = await CruiseRepositoryTest.GetCruiseForTestAsync(); var result = await repository.CreateAsync(cruise, source); var booking = await repository.FindByReferenceAsync(result.Reference); var paymentRepository = AecPaymentRepositoryTest.GetPaymentRepositoryForTest(); await paymentRepository.CreateAsync(booking, 123.45m); await repository.DeleteAsync(booking); // The booking now has cabins, pax, products and a payment // If we add more data in subtables remember to add and check for it here // All relevant tables should be empty now using (var db = DbUtil.Open()) { Assert.AreEqual(0, db.ExecuteScalar <int>("select count(*) from [Booking]")); Assert.AreEqual(0, db.ExecuteScalar <int>("select count(*) from [BookingCabin]")); Assert.AreEqual(0, db.ExecuteScalar <int>("select count(*) from [BookingPax]")); Assert.AreEqual(0, db.ExecuteScalar <int>("select count(*) from [BookingPayment]")); Assert.AreEqual(0, db.ExecuteScalar <int>("select count(*) from [BookingProduct]")); } }
internal static DeletedBookingRepository GetDeletedBookingRepositoryForTest() { return(new DeletedBookingRepository(AecPaymentRepositoryTest.GetPaymentRepositoryForTest())); }