public async Task PutExpenses_ShouldReturnBadRequestWhenObjectIsNull()
        {
            // Arrange
            expectedIdOfExpense = 1;
            var controller = new ExpenseController(null, null);

            // Act
            var objectResult = await controller.Edit(expectedIdOfExpense, null) as ObjectResult;

            // Assert
            Assert.AreEqual(400, objectResult.StatusCode, "Expense StatusCode400 does not works. Method put. Object cannot be empty");
        }
        public void ExpenseService_ShouldCallUpdateExpenseOnce_WhenEditPostIsCalled()
        {
            // Arrange
            var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object);

            // Act
            expenseController.Edit(new ExpenseViewModel()
            {
                Category = new Guid().ToString()
            });

            // Assert
            expenseServiceMock.Verify(x => x.UpdateExpense(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <decimal>(), It.IsAny <DateTime>(), It.IsAny <string>()), Times.Once);
        }
        public void ExpenseService_ShouldCallGetExpenseCategoriesOnce_WhenEditGetIsCalled()
        {
            // Arrange
            var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object);
            var expense           = new Expense("_", new Guid(), "_", new Guid(), 1M, DateTime.Now, DateTime.Now);

            this.expenseServiceMock.Setup(x => x.GetExpense(It.IsAny <Guid>())).Returns(expense);
            this.mappingServiceMock.Setup(x => x.Map <ExpenseViewModel>(It.IsAny <object>())).Returns(new ExpenseViewModel());
            // Act
            expenseController.Edit(new Guid().ToString());

            // Assert
            expenseServiceMock.Verify(x => x.GetExpenseCategories(), Times.Once);
        }
        public async Task PutExpenses_ShouldReturnStatusCode204WhenObjectIsUpdated()
        {
            // Arrange
            mockExpenseService.Setup(repo => repo.EditExpense(It.IsAny <Models.Expense>(), It.IsAny <int>())).Returns(Task.FromResult(true));
            var controller = new ExpenseController(mockExpenseService.Object, mockLogger.Object);

            expectedIdOfExpense = 1;

            // Act
            var noContentResult = await controller.Edit(expectedIdOfExpense, expenseModelObj) as NoContentResult;

            // Assert
            Assert.AreEqual(204, noContentResult.StatusCode, "Expense method put. Object was not updated.");
        }