private ProductDto CreateSpecial(CreateSpecialArgs args, Func <Special> createSpecial, Func <Special, ISpecialDto> mapToSpecialDto)
        {
            var product = _productRepository.FindProduct(args.ProductName);

            product.Special = createSpecial();
            var persistedProduct = _productRepository.UpdateProduct(product);

            var productDto = _mapper.Map <ProductDto>(persistedProduct);

            productDto.Special = mapToSpecialDto(product.Special);
            return(productDto);
        }
Exemple #2
0
        public void CreateSpecialArgsValidator_ContainsCorrectValidationRules()
        {
            _validator.ShouldHaveValidationErrorFor(x => x.ProductName, null as string);
            _validator.ShouldHaveValidationErrorFor(x => x.ProductName, "");
            _validator.ShouldHaveValidationErrorFor(x => x.ProductName, " ");
            _validator.ShouldHaveValidationErrorFor(x => x.ProductName, "milk");
            _validator.ShouldHaveValidationErrorFor(x => x.EndTime, (DateTime?)null);

            var args = new CreateSpecialArgs()
            {
                ProductName = "can of soup", EndTime = DateTime.Now
            };
            Action validate = () => _validator.ValidateAndThrow(args);

            validate.Should().Throw <ValidationException>("*Special start time is required*");

            args.StartTime = DateTime.Now;
            validate.Should().Throw <ValidationException>("*Special start time must be less than end time*");
        }