public async Task HandleAsync(ModifyExpenseCommand message, CancellationToken token = default(CancellationToken)) { var expense = await _expenses.GetByIdAsync(message.ExpenseId); if (expense == null) { throw new HouseholdException($"Expense {message.ExpenseId} doesn't exists"); } expense.Modify(message.ExpenseTypeId, message.Name, message.Description, message.Amount, message.Date, Period.Create(message.PeriodStart, message.PeriodEnd), message.Version); await _expenses.SaveChangesAsync(token); }
public async Task ShouldModifyExisting() { // Arrange Guid expectedId = Guid.NewGuid(); string expectedName = "Modified Name"; Expense entity = Expense.Create(expectedId, Guid.NewGuid(), Guid.NewGuid(), "Name", "Description", 0.12m, DateTime.Now, Period.Create(DateTime.Now, DateTime.Now)); var repository = new Mock <IExpenseRepository>(); repository.Setup( e => e.GetByIdAsync(It.IsAny <Guid>(), It.IsAny <CancellationToken>())).ReturnsAsync(entity); ModifyExpenseCommand cmd = new ModifyExpenseCommand(expectedId, Guid.NewGuid(), expectedName, "Description", 0.12m, DateTime.Now, DateTime.Now, DateTime.Now, 1); ExpenseCommandHandler actual = new ExpenseCommandHandler(repository.Object); // Act await actual.HandleAsync(cmd); // Assert Assert.IsTrue(entity.Id == expectedId); Assert.IsTrue(entity.Name == expectedName); }