public async Task <ApplicationDataResult <PurchaseItemDto> > UpdateItemAsync(Guid purchaseId, Guid purchaseItemId,
                                                                                     AddOrUpdatePurchaseItemDto data)
        {
            ValidationResult validationResult = await _validatorPurchaseItem.ValidateAsync(data);

            if (validationResult.IsValid is false)
            {
                return(FactoryFromValidationResult <PurchaseItemDto>(validationResult));
            }

            Purchase purchase = await _purchaseRepository.FindAsync(purchaseId);

            PurchaseItem purchaseItem = purchase.FindItemById(purchaseItemId);

            if (purchaseItem is null)
            {
                throw ExceptionsFactory.FactoryNotFoundException <PurchaseItem>(purchaseItemId);
            }

            Product product = await _productRepository.FindAsync(data.ProductId);

            if (product is null)
            {
                throw ExceptionsFactory.FactoryNotFoundException <Product>(purchaseId);
            }

            purchaseItem.Update(data.Amount, data.Value, product);

            await _purchaseService.UpdateItemAsync(purchase, purchaseItem);

            return(FactoryResultFromData(_mapper.Map <PurchaseItemDto>(purchaseItem)));
        }
Example #2
0
        public async Task PurchaseApplicationService_AddItemAsync_DeveFecharCorretamenteORegistroQuandoEncontrarMesmo__()
        {
            // Arange
            ConfigureMock();
            FactoryService();

            AddOrUpdatePurchaseItemDto addOrUpdatePurchaseItemDto =
                AddOrUpdatePurchaseItemDtoFaker.GenerateValidFaker().Generate();

            throw new Exception("TODO");

            // Act
            ApplicationDataResult <PurchaseItemDto> result =
                await _purchaseApplicationService.AddItemAsync(addOrUpdatePurchaseItemDto.PurchaseId, addOrUpdatePurchaseItemDto);

            // Assert
            result.IsSuccess.Should().BeTrue();
            result.Errors.Should().BeEmpty();
            result.Data.Should().NotBeNull();
        }