public async Task AddItemToCart_When_CartNotFound_Then_ExceptionIsThrown() { // Arrange dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(Enumerable.Empty <Cart>()); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(string.Empty, (x) => Task.FromResult(null as Product), null); // Assert Exception }
public async Task AddItemToCart_When_CartIsCheckedOut_Then_ExceptionIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, true); var cart = fixture.Generate <Cart>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => Task.FromResult(null as Product), null); //Assert Exception }
public async Task AddItemToCart_When_ProductNotFound_Then_ExceptionIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); var cart = fixture.Generate <Cart>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => throw new ProdcutNotFoundException(), fixture.Generate <CartItem>()); //Assert Exception }
public async Task AddItemToCart_When_ProductOutOfStock_Then_ExceptionIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); var cart = fixture.Generate <Cart>(); var cartItem = fixture.Generate <CartItem>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => Task.FromResult(fixture.Generate <Product>(constraints: new { Stock = cartItem.Quantity - 1 })), cartItem); // Assert Exception }
public async Task AddItemToCart_When_DataIsValid_Then_ItemIsAdded() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); var cart = fixture.Generate <Cart>(); var cartItem = fixture.Generate <CartItem>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => Task.FromResult(fixture.Generate <Product>(constraints: new { Stock = cartItem.Quantity })), cartItem); // Assert cart.Items.Should().Contain(cartItem); }