public void RemoveProductFromBasket_GivenProductAndBasketExist_ShouldRemoveTheProductToTheBasket() { // Arrange InMemoryProductDbContext ctx = CreateTestDatabase(); BasketRepository basketRepository = new BasketRepository(ctx); // Act // Add new product to database List <Product> productsToAdd = new List <Product>() { new Product() { Title = "Product 1" }, new Product() { Title = "Product 2" }, new Product() { Title = "Product 3" } }; foreach (var product in productsToAdd) { ctx.Products.Add(product); } ctx.SaveChanges(); // Add new basket to database string ownerId = "george"; basketRepository.CreateBasket(ownerId); // Add products to basket Basket basket = basketRepository.GetBasketByOwnerId(ownerId); foreach (var product in productsToAdd) { basketRepository.AddProductToBasket(product.ProductId, basket.OwnerID); } // Delete product from basket basketRepository.RemoveProductFromBasket(productsToAdd[1].ProductId, ownerId); basket = basketRepository.GetBasketByOwnerId(ownerId); // Assert Assert.AreEqual(2, basket.BasketItems.Count); Assert.AreEqual(1, basket.BasketItems[0].ProductId); Assert.AreEqual(3, basket.BasketItems[1].ProductId); }