public void AddBasketProduct_Failed_Item_In_The_Basket_Is_Out_Of_Stock([Frozen] Mock <ISQLRepository <Product> > _productRepository, [Frozen] Mock <ISQLRepository <Stock> > _stockRepository, [Frozen] Mock <IMongoRepository <Basket> > _mongoRepository, [Frozen] Mock <IRedisRepository> redisRepository, [Frozen] Mock <IBasketRepository> _basketRepository, Stock stock, ProductBasket productBasket, BasketService basketService, List <Basket> basket) { //Arrange productBasket.ProductPiece = 2; stock.MaxPiece = 3; stock.Piece = 4; _stockRepository.Setup(x => x.GetByIdAsync(It.IsAny <Expression <Func <Stock, bool> > >())).ReturnsAsync(stock); _mongoRepository.Setup(x => x.GetAllAsync(It.IsAny <Expression <Func <Basket, object> > >(), It.IsAny <object>())) .ReturnsAsync(basket); _basketRepository.Setup(x => x.Sum(basket)).Returns(3); basketService = new BasketService(_mongoRepository.Object, _productRepository.Object, _stockRepository.Object, redisRepository.Object, _basketRepository.Object); //Act Func <Task> act = async() => { await basketService.AddBasketProduct(productBasket); }; //Assert _productRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>()), Times.Never); redisRepository.Verify(x => x.Add(It.IsAny <string>(), It.IsAny <string>()), Times.Never); act.Should().Throw <Exception>().WithMessage("Sepete Stokta bulunandan fazla veya Maksimum Ekleme limitini aştınız."); }
public void AddBasketProduct_Failed_StockPiece_Is_More_Than_The_Piece_Of_Product([Frozen] Mock <ISQLRepository <Product> > _productRepository, [Frozen] Mock <ISQLRepository <Stock> > _stockRepository, [Frozen] Mock <IMongoRepository <Basket> > _mongoRepository, [Frozen] Mock <IRedisRepository> redisRepository, [Frozen] Mock <IBasketRepository> _basketRepository, Stock stock, ProductBasket productBasket, BasketService basketService, List <Basket> basket) { //Arrange productBasket.ProductPiece = 3; stock.MaxPiece = 3; stock.Piece = 2; _stockRepository.Setup(x => x.GetByIdAsync(It.IsAny <Expression <Func <Stock, bool> > >())).ReturnsAsync(stock); basketService = new BasketService(_mongoRepository.Object, _productRepository.Object, _stockRepository.Object, redisRepository.Object, _basketRepository.Object); //Act Func <Task> act = async() => { await basketService.AddBasketProduct(productBasket); }; //Assert _mongoRepository.Verify(x => x.GetAllAsync(It.IsAny <Expression <Func <Basket, object> > >(), It.IsAny <object>()), Times.Never); _mongoRepository.Verify(x => x.AddAsync(It.IsAny <Basket>()), Times.Never); _basketRepository.Verify(x => x.Sum(basket), Times.Never); _productRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>()), Times.Never); redisRepository.Verify(x => x.Add(It.IsAny <string>(), It.IsAny <string>()), Times.Never); act.Should().Throw <Exception>().WithMessage("Ürün stokta bulunmamaktadır."); }
public async Task AddBasketProduct_Success_Product_add_to_basket([Frozen] Mock <ISQLRepository <Product> > _productRepository, [Frozen] Mock <ISQLRepository <Stock> > _stockRepository, [Frozen] Mock <IMongoRepository <Basket> > _mongoRepository, [Frozen] Mock <IRedisRepository> redisRepository, [Frozen] Mock <IBasketRepository> _basketRepository, Stock stock, ProductBasket productBasket, BasketService basketService, List <Basket> basket, Product product) { //Arrange productBasket.ProductPiece = 2; stock.MaxPiece = 3; stock.Piece = 4; _stockRepository.Setup(x => x.GetByIdAsync(It.IsAny <Expression <Func <Stock, bool> > >())).ReturnsAsync(stock); _mongoRepository.Setup(x => x.GetAllAsync(It.IsAny <Expression <Func <Basket, object> > >(), It.IsAny <object>())) .ReturnsAsync(basket); _basketRepository.Setup(x => x.Sum(basket)).Returns(1); basketService = new BasketService(_mongoRepository.Object, _productRepository.Object, _stockRepository.Object, redisRepository.Object, _basketRepository.Object); _productRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(product); redisRepository.Setup(x => x.Add(It.IsAny <string>(), It.IsAny <string>())).Returns(Task.CompletedTask); //Act var act = await basketService.AddBasketProduct(productBasket); //Assert _mongoRepository.Verify(x => x.AddAsync(It.IsAny <Basket>()), Times.Once); redisRepository.Verify(x => x.Add(It.IsAny <string>(), It.IsAny <string>()), Times.Once); act.StatusCode.Should().Be(HttpStatusCode.OK); }