public void Open_Account_Should_Link_A_New_Account_To_The_User_And_Have_The_Initial_Movement() { OpenAccountResult result = _User.OpenAccount(initialDeposit: 100.50m); Assert.AreEqual(_User.Id, result.Account.UserId); Assert.IsNotNull(result.Movement); }
public OpenAccountResult OpenAccount(decimal initialDeposit) { Account newAccount = Account.Create(Id); Movement initialMovement = newAccount.RegisterMovement(initialDeposit, "Initial Deposit"); return(OpenAccountResult.Create(newAccount, initialMovement)); }
public async Task <Guid> RunAsync(Guid userId, decimal initialDeposit) { User user = _dbRepository.Get <User>(userId); OpenAccountResult result = user.OpenAccount(initialDeposit); _dbRepository.Insert(result.Account); _dbRepository.Persist(); await _eventRepository.AddEventAsync(nameof(Account), result.Account.Id, result.Movement.Amount >= 0?EventType.Deposit : EventType.Withdraw, result.Movement); return(result.Account.Id); }