public void ConvertToEntity_InputNotNull_ReturnEmplyId() { CreateProductVariantInput input = MockCreateProductVariantInput(); ProductVariant variant = input.ConvertToEntity(); Assert.Equal(Guid.Empty, variant.Id); }
public void ConvertToEntity_InputNotNull_ReturnSameValues() { CreateProductVariantInput input = MockCreateProductVariantInput(); ProductVariant variant = input.ConvertToEntity(); Assert.Equal(input.Values, variant.Values); }
public async Task <ValidationResult> ValidateCreateProductVariant(CreateProductVariantInput input) { ValidationResult validationResult = new(); if (string.IsNullOrWhiteSpace(input.Name)) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.Name), "Debe ingresar un nombre para la variante.")); } else if (input.Name.HasFileInvalidChars()) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.Name), "El nombre no puede contener caracteres invalidos (<, >, :, \", /, \\, |, ?, *).")); } else if (!input.Values.Any()) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.Values), "No se puede crear una variante sin valores.")); } else if (input.Values.GroupBy(x => x).Any(g => g.Count() > 1)) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.Values), "No pueden haber valores de una variante repetidos.")); } else if (SubCategoriesHasInvalidChars()) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.Values), "El nombre de los valores no puede contener caracteres invalidos (<, >, :, \", /, \\, |, ?, *).")); } else { var product = await _productRepository.GetAsync(input.ProductId); if (product is null) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.ProductId), "El producto no existe.")); } else { var productVariant = await _productVariantRepository.GetByNameAsync(product, input.Name); if (productVariant is not null) { validationResult.Messages.Add(new(nameof(CreateProductVariantInput.Name), "La variante ya existe.")); } } } bool SubCategoriesHasInvalidChars() { foreach (var item in input.Values) { if (item.HasFileInvalidChars()) { return(true); } } return(false); } return(validationResult); }
public static ProductVariant ConvertToEntity(this CreateProductVariantInput source) { return(new() { Name = source.Name, Values = source.Values, ProductId = source.ProductId }); }
public async Task <OperationResult <ProductVariantDto> > CreateAsync(CreateProductVariantInput input) { var validationResult = await _productVariantValidator.ValidateCreateProductVariant(input); if (validationResult.IsSuccess) { var entity = input.ConvertToEntity(); entity = await _productVariantRepository.CreateAsync(entity); return(OperationResult <ProductVariantDto> .Success(entity.ConvertToDto())); } return(OperationResult <ProductVariantDto> .Fail(validationResult)); }
public async Task <IActionResult> Create(CreateProductVariantInput input) { var result = await _service.CreateAsync(input); return(new OperationActionResult(result)); }