public async Task <bool> EditCategoryExpense(Models.CategoryExpense categoryExpenseRequest, int id)
        {
            // Get stock item by id
            var categoryExpenseFromDB = await _categoryExpenseRepository.GetAsync(id);

            // Validate if entity exists
            if (categoryExpenseFromDB == null)
            {
                return(false);
            }

            // Set changes to entity
            //TODO, check this, search better approach...
            if (categoryExpenseRequest != null &&
                categoryExpenseRequest.Description != null &&
                categoryExpenseRequest.Description.Trim().Length != 0)
            {
                categoryExpenseFromDB.Description = categoryExpenseRequest.Description;
            }

            if (!await _categoryExpenseRepository.SaveAsync())
            {
                // _logger.LogError($"Add User is not valid. Error in SaveAsync(). When accessing to UserController/Post");
                return(false);
            }

            return(true);
        }
        public async Task <IActionResult> Edit(int id, [FromBody] Models.CategoryExpense categoryExpenseRequest)
        {
            try
            {
                if (categoryExpenseRequest == null)
                {
                    return(BadRequest("Object cannot be null"));
                }

                // Update entity in repository
                var isUpdated = await _categoryExpenseService.EditCategoryExpense(categoryExpenseRequest, id);

                if (isUpdated)
                {
                    return(NoContent());
                }
                else
                {
                    // _logger.LogError($"Add User is not valid. Error in SaveAsync(). When accessing to UserController/Post");
                    return(StatusCode(500, "A problem happend while handling your request."));
                }
            }
            catch (Exception ex)
            {
                //response.DidError = true;
                //response.ErrorMessage = "There was an internal error, please contact to technical support.";

                // Logger?.LogCritical("There was an error on '{0}' invocation: {1}", nameof(PutStockItemAsync), ex);
            }

            return(NoContent());
        }
        public async Task CategoryExpensePut_TryingChangeEditingObjectInDB_ShouldBeAbleEditObjectAndSaveChangesToDatabase()
        {
            // Arrange
            mockRepo.Setup(y => y.GetAsync(It.IsAny <int>()))
            .Returns(Task.FromResult(categoryExpenseEntityObj));
            mockRepo.Setup(y => y.SaveAsync())
            .Returns(() => Task.Run(() => { return(true); })).Verifiable();

            var sut = new CategoryExpenseService(mockRepo.Object, null);

            categoryExpenseModelObj = new Models.CategoryExpense {
                Id = 2, Description = "x2 Changed"
            };

            var entityFromDB = queryDBInMemory.GetAsync(2);

            entityFromDB.Result.Description = categoryExpenseModelObj.Description;
            await context.SaveChangesAsync();

            var isUpdatedNewObject = queryDBInMemory.GetAsync(2);
            // Act
            var resultOfEditCategoryExpense = await sut.EditCategoryExpense(categoryExpenseModelObj, 2);

            // Assert
            Assert.IsTrue(resultOfEditCategoryExpense, "SaveAsync should successful when edit CategoryExpense.");
            Assert.AreEqual(2, isUpdatedNewObject.Result.Id, "Object was not updated, require id=2");
            Assert.AreEqual("x2 Changed", isUpdatedNewObject.Result.Description, "Object was not updated, require Description=x2 Changed");
            mockRepo.Verify(
                x => x.GetAsync(It.IsAny <int>()), Times.Once, "GetAsync should run once");
            mockRepo.Verify(
                x => x.SaveAsync(), Times.Once, "SaveAsync should run once");
        }
        public async Task Setup()
        {
            await InitDatabaseInMemoryTest();

            categoryExpenseModelLists  = new List <Models.CategoryExpense>();
            categoryExpenseEntityLists = new List <Entities.CategoryExpense>();
            mockRepo   = new Mock <ICategoryExpenseRepository>();
            mockMapper = new Mock <IMapper>();
            categoryExpenseEntityObj = new Entities.CategoryExpense {
                Id = 2, Description = "CategoryeExpense1", IsDeleted = false, Weight = 2, CategoryGroupId = 2
            };
            categoryExpenseModelObj = new Models.CategoryExpense {
                Id = 2, Description = "CategoryeExpense2", IsDeleted = false, Weight = 2, CategoryGroupId = 2
            };
            categoryExpenseModelLists.Add(categoryExpenseModelObj);
        }
 public void Setup()
 {
     categoryExpenseObj = new Entities.CategoryExpense {
         Id = 2, Description = "CategoryeExpense2", IsDeleted = false, Weight = 2, CategoryGroupId = 2
     };
     categoryExpenseModelObj = new Models.CategoryExpense {
         Id = 2, Description = "CategoryeExpense2", IsDeleted = false, Weight = 2, CategoryGroupId = 2
     };
     mockCategoryExpenseRepository = new Mock <ICategoryExpenseRepository>();
     mockCategoryExpenseService    = new Mock <ICategoryExpenseService>();
     expectedIdOfCategoryExpense   = 2;
     categoryExpenseListObj        = new List <Models.CategoryExpense>()
     {
         new Models.CategoryExpense {
             Id = 2, Description = "CategoryeExpense2", IsDeleted = false, Weight = 2, CategoryGroupId = 2
         }
     };
 }