public void PerformTransferCreateActivities() { //Arrange var customer = GetCustomer(); var source = BankAccountFactory.CreateBankAccount( customer, new BankAccountNumber("1111", "2222", "3333333333", "01")); source.DepositMoney(1000, "initial load"); var target = BankAccountFactory.CreateBankAccount( customer, new BankAccountNumber("1111", "2222", "12312321322", "01")); //Act var activities = source.BankAccountActivity.Count; var bankTransferService = new BankTransferService(); bankTransferService.PerformTransfer(50, source, target); //Assert Assert.IsNotNull(source.BankAccountActivity); Assert.AreEqual(++activities, source.BankAccountActivity.Count); }
public UserDTO AddBankAccount(UserDTO userDTO) { if (userDTO != null) { //check if exists the customer for this bank account var associatedCustomer = _customerRepository.Get(bankAccountDTO.CustomerId); if (associatedCustomer != null) // if the customer exist { //Create a new bank account number var accountNumber = CalculateNewBankAccountNumber(); //Create account from factory var account = BankAccountFactory.CreateBankAccount(associatedCustomer, accountNumber); //save bank account SaveBankAccount(account); //return dto var adapter = TypeAdapterFactory.CreateAdapter(); return(adapter.Adapt <BankAccount, BankAccountDTO>(account)); } else //the customer for this bank account not exist, cannot create a new bank account { LoggerFactory.CreateLog().LogWarning(Messages.warning_CannotCreateBankAccountForNonExistingCustomer); return(null); } } else // if bank account is null or customer identifier is empty, cannot create a new bank account { LoggerFactory.CreateLog().LogWarning(Messages.warning_CannotAddNullBankAccountOrInvalidCustomer); return(null); } }
public void DoSomething() { var accountFactory = new BankAccountFactory(); var storageFactory = new BankAccountStorageFactory(); var bankService = new BankAccountService(storageFactory); //AddAccountsToService(bankService, accountFactory); Console.WriteLine(bankService); }
public void OpenAccount(AccountHolder holder, BankAccountFactory factory) { ValidateOnNull(holder, nameof(holder)); ValidateOnNull(factory, nameof(factory)); BankAccount account = factory.Create(holder, this.IdGenerator); holder.AddAccount(account); this.Repository.Save(account); }
public void PerformTransferThrowExceptionIfTargetIsLockedAccount() { //Arrange var customer = GetCustomer(); var source = BankAccountFactory.CreateBankAccount(customer, new BankAccountNumber("1111", "2222", "3333333333", "01")); source.DepositMoney(1000, "initial load"); var target = BankAccountFactory.CreateBankAccount(customer, new BankAccountNumber("1111", "2222", "12312321322", "01")); target.Lock(); //Act var bankTransferService = new BankTransferService(); Exception ex = Assert.Throws <InvalidOperationException>(() => bankTransferService.PerformTransfer(10, source, target)); Assert.IsType <InvalidOperationException>(ex); }
public void PerformTransferThrowExceptionIfSourceCantWithdrawedWithExceedAmoung() { //Arrange var customer = GetCustomer(); var source = BankAccountFactory.CreateBankAccount(customer, new BankAccountNumber("1111", "2222", "3333333333", "01")); source.DepositMoney(1000, "initial load"); var target = BankAccountFactory.CreateBankAccount(customer, new BankAccountNumber("1111", "2222", "12312321322", "01")); //Act var bankTransferService = new BankTransferService(); Exception ex = Assert.Throws <InvalidOperationException>(() => bankTransferService.PerformTransfer(2000, source, target)); Assert.IsType(typeof(InvalidOperationException), ex); }
public void BankAccountRepositoryRemoveItemDeleteIt() { //Arrange var unitOfWork = new MainBcUnitOfWork(); var customerRepository = new CustomerRepository(unitOfWork); var bankAccountRepository = new BankAccountRepository(unitOfWork); var customer = customerRepository.Get(new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45")); var bankAccountNumber = new BankAccountNumber("4444", "5555", "3333333333", "02"); var newBankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber); bankAccountRepository.Add(newBankAccount); unitOfWork.Commit(); //Act bankAccountRepository.Remove(newBankAccount); unitOfWork.Commit(); }
public BankAccountRepository() { Accounts = new List <BankAccount>(); RepositoryFileName = Settings.Default.BinaryRepositoryFileName; if (!File.Exists(RepositoryFileName)) { return; } Stream stream = File.OpenRead(RepositoryFileName); using (var reader = new BinaryReader(stream)) { int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { string accountNumber = reader.ReadString(); string ownerFirstName = reader.ReadString(); string ownerLastName = reader.ReadString(); decimal balance = reader.ReadDecimal(); decimal bonusPoints = reader.ReadDecimal(); BankAccountStatus status = (BankAccountStatus)reader.ReadInt32(); BankAccountType type = (BankAccountType)reader.ReadInt32(); var owner = new AccountOwner() { FirstName = ownerFirstName, LastName = ownerLastName }; Accounts.Add(InitializeFields(BankAccountFactory.Create(type, accountNumber), owner, balance, bonusPoints)); } } }