public async Task <IActionResult> InsertMoney([FromBody] InsertMoneyModel.MoneyRequest request) { if (request == null) { return(this.BadRequest($"Request {nameof(InsertMoneyModel.MoneyRequest)} is null")); } var maybeAccount = await this.accountRepository.GetAccountAsync(); if (!maybeAccount.TryGetValue(out var account)) { return(this.NotFound("No account available")); } var money = Money.CreateInstance(request.Amount); var canInsertMoney = account.CanInsertMoney(money); if (!canInsertMoney.Success) { return(this.BadRequest($"{canInsertMoney.Code}: coin not registered")); } account.InsertMoney(money); await this.accountRepository.UpdateAccountAsync(account); return(this.NoContent()); }
public async Task Create_NotFound_result_when_no_account_is_available( [Frozen] Mock <IAccountRepository> accountRepositoryMock, InsertMoneyModel.MoneyRequest request, AccountController sut) { // Act var result = await sut.InsertMoney(request); // Assert accountRepositoryMock.Verify(x => x.UpdateAccountAsync(It.IsAny <Account>()), Times.Never); result.Should().BeOfType <NotFoundObjectResult>(); ((ObjectResult)result).Value.ToString().Should().Be("No account available"); }
public async Task Create_Ok_result_when_inserting_allowed_money( [Frozen] Mock <IAccountRepository> accountRepositoryMock, AccountController sut) { // Arrange var request = new InsertMoneyModel.MoneyRequest(0.50m); // Act var result = await sut.InsertMoney(request); // Assert accountRepositoryMock.Verify(x => x.UpdateAccountAsync(It.IsAny <Account>()), Times.Once); result.Should().BeOfType <NoContentResult>(); }
public async Task Create_BadRequest_result_when_inserting_not_allowed_money( [Frozen] Mock <IAccountRepository> accountRepositoryMock, AccountController sut) { // Arrange var request = new InsertMoneyModel.MoneyRequest(0.75m); // Act var result = await sut.InsertMoney(request); // Assert accountRepositoryMock.Verify(x => x.UpdateAccountAsync(It.IsAny <Account>()), Times.Never); result.Should().BeOfType <BadRequestObjectResult>(); ((ObjectResult)result).Value.ToString().Should().Be($"{AccountCode.CoinNotRegistered}: coin not registered"); }