public async Task TestCreateOrderTAndCsBad() { //SETUP var userId = Guid.NewGuid(); var options = SqliteInMemory.CreateOptions <OrderDbContext>(); using var context = new OrderDbContext(options, new FakeUserIdService(userId)); context.Database.EnsureCreated(); var service = new PlaceOrderBizLogic(new PlaceOrderDbAccess(context)); //ATTEMPT var lineItems = new List <OrderLineItem> { new OrderLineItem { BookId = 1, NumBooks = 4 }, }; var dto = new PlaceOrderInDto(false, userId, lineItems.ToImmutableList()); var status = await service.CreateOrderAndSaveAsync(dto); //VERIFY status.IsValid.ShouldBeFalse(); status.GetAllErrors().ShouldEqual("You must accept the T&Cs to place an order."); }
public async Task TestCreateOrderOneBookOk() { //SETUP var userId = Guid.NewGuid(); var options = SqliteInMemory.CreateOptions <OrderDbContext>(); options.StopNextDispose(); using var context = new OrderDbContext(options, new FakeUserIdService(userId)); context.Database.EnsureCreated(); var bookIds = context.SeedFourBookDdPartWithOptionalDbSchemaAdd(true); var service = new PlaceOrderBizLogic(new PlaceOrderDbAccess(context)); //ATTEMPT var lineItems = new List <OrderLineItem> { new OrderLineItem { BookId = 1, NumBooks = 4 }, }; var dto = new PlaceOrderInDto(true, userId, lineItems.ToImmutableList()); var status = await service.CreateOrderAndSaveAsync(dto); //VERIFY status.IsValid.ShouldBeTrue(status.GetAllErrors()); context.ChangeTracker.Clear(); var order = context.Orders.Include(x => x.LineItems).Single(); var lineItem = order.LineItems.Single(); lineItem.BookId.ShouldEqual(1); lineItem.NumBooks.ShouldEqual((short)4); lineItem.BookPrice.ShouldEqual(40); }
public async Task TestCreateOrderEmptyBasketBad() { //SETUP var userId = Guid.NewGuid(); var options = SqliteInMemory.CreateOptions <OrderDbContext>(); using var context = new OrderDbContext(options, new FakeUserIdService(userId)); context.Database.EnsureCreated(); var service = new PlaceOrderBizLogic(new PlaceOrderDbAccess(context)); //ATTEMPT var dto = new PlaceOrderInDto(true, userId, (new List <OrderLineItem>()).ToImmutableList()); var status = await service.CreateOrderAndSaveAsync(dto); //VERIFY status.IsValid.ShouldBeFalse(); status.GetAllErrors().ShouldEqual("No items in your basket."); }