public async Task ValidateStockItem_GivenAStockItemWithNegativeQuantity_ShouldReturAValidationResultWithExpectedMessage()
        {
            //Arrange
            var guid = Guid.NewGuid();

            var stockItem = new StockItem
            {
                WholesalerId = guid,
                UnitPrice    = 1.0f,
                Quantity     = -1
            };

            var expectedMessage = "The quantity of a stock item cannot be negative";

            var mockedWholesalerQuery = new Mock <IWholesalerQuery>();

            mockedWholesalerQuery.Setup(query => query.GetWholesaler(It.IsAny <Guid>()))
            .ReturnsAsync(new Wholesaler());

            var wholesalerValidation = new WholesalerValidation(mockedWholesalerQuery.Object);

            //Act
            var results = await wholesalerValidation.ValidateStockItem(stockItem);

            //Assert
            Assert.Contains(results, result => result != null && result.ErrorMessage.Equals(expectedMessage));
        }
        public async Task ValidateStockItem_GivenAValidStockItem_ShouldReturnAllSuccessValidationResults()
        {
            //Arrange
            var guid = Guid.NewGuid();

            var stockItem = new StockItem
            {
                WholesalerId = guid,
                UnitPrice    = 1.0f,
                Quantity     = 10
            };

            var mockedWholesalerQuery = new Mock <IWholesalerQuery>();

            mockedWholesalerQuery.Setup(query => query.GetWholesaler(It.IsAny <Guid>()))
            .ReturnsAsync(new Wholesaler());

            var wholesalerValidation = new WholesalerValidation(mockedWholesalerQuery.Object);

            //Act
            var results = await wholesalerValidation.ValidateStockItem(stockItem);

            //Assert
            Assert.True(results.All(result => result == ValidationResult.Success));
        }
        public async Task ValidateStockItem_GivenAStockItemWithAnEmptyWholesalerId_ShouldReturAValidationResultWithExpectedMessage()
        {
            //Arrange
            var guid = Guid.NewGuid();

            var stockItem = new StockItem
            {
                WholesalerId = Guid.Empty,
                UnitPrice    = 1.0f,
                Quantity     = 10
            };

            var expectedMessage = "The wholesaler cannot be null or empty";

            var wholesalerValidation = new WholesalerValidation(null);

            //Act
            var results = await wholesalerValidation.ValidateStockItem(stockItem);

            //Assert
            Assert.Contains(results, result => result != null && result.ErrorMessage.Equals(expectedMessage));
        }