public void Create_Should_Throw_Exception_If_Quantity_BiggerThan_Stock() { var productStock = 10; var quantity = 11; _productEntityMock.Setup(x => x.Stock).Returns(productStock); Assert.Throws <InsufficientStockException>(() => { _createOrderService.Create(_productEntityMock.Object, quantity, null, 1); }); }
public async Task <CreateOrderResponse> Handle(CreateOrderCommand request, CancellationToken cancellationToken) { var product = await _productRepository.FindOneAsync(x => x.ProductCode == request.ProductCode); if (product == null) { throw new ProductNotFoundException(); } var campaignsForProduct = await _campaignRepository.FindAsync(x => x.ProductCode == request.ProductCode); var campaignForProduct = campaignsForProduct.FirstOrDefault(x => x.IsActive(_timeService.CurrentTime)); var order = _createOrderService.Create(product, request.Quantity, campaignForProduct, _timeService.CurrentTime); await _productRepository.UpdateAsync(product); if (campaignForProduct != null) { await _campaignRepository.UpdateAsync(campaignForProduct); } var orderEntity = await _orderRepository.AddAsync(order); return(new CreateOrderResponse(orderEntity)); }