Пример #1
0
        public ActionResult <BankAccountModel> Post(BankAccountModel accountIn)
        {
            var newAccount = _bankAccountService.CreateAccount(accountIn.ToDomain());

            return(BankAccountModel.FromDomain(newAccount));
            //return CreatedAtRoute("BankAccounts", new { id = accountIn.Id.ToString() }, accountIn);
        }
Пример #2
0
        // Feature: Create new accounts
        // Requirements:
        //      Savings must have a minimum of 700
        //      Can't have more than 1 account of the same type
        public bool CreateAccount(BankAccount newBankAccount)
        {
            if (newBankAccount.AccountType == BankAccountType.Savings)
            {
                if (newBankAccount.Balance < 700)
                {
                    return(false);
                }
            }

            // Lecture:
            // Incur two round trips for consolidate business rules
            if (String.IsNullOrWhiteSpace(newBankAccount.Owner?.EntityId))
            {
                throw new Exception($"Invalid {nameof(BankAppUser.EntityId)}");
            }

            var userAccounts = _bankAccountService.GetBankAccounts(newBankAccount.Owner);

            foreach (var account in userAccounts)
            {
                if (account.AccountType == newBankAccount.AccountType)
                {
                    return(false);
                }
            }


            return(_bankAccountService.CreateAccount(newBankAccount));
        }
Пример #3
0
        public void BankAccountRepository_UpdateAccountTest(string firstName, string lastName, string email, string expectedAccountNumber)
        {
            var repositoryMock = new Mock <IBankAccountRepository>();

            repositoryMock.Setup(repository => repository.GetAccount(It.IsAny <string>())).Returns(
                new DtoAccount
            {
                AccountNumber  = expectedAccountNumber,
                AccountType    = "BaseBankAccount",
                Balance        = 100,
                Bonus          = 100,
                OwnerFirstName = firstName,
                OwnerLastName  = lastName
            });
            var accountNumberGeneratorMock = new Mock <IAccountNumberGenerator>(MockBehavior.Strict);

            accountNumberGeneratorMock.Setup(service => service.CreateNumber(new List <BankAccount>())).Returns(expectedAccountNumber);
            var bankAccountService = new BankAccountService(repositoryMock.Object);

            string actualAccountNumber = bankAccountService.CreateAccount(
                AccountType.Base,
                accountNumberGeneratorMock.Object,
                firstName,
                lastName,
                email);

            bankAccountService.Deposit(actualAccountNumber, 100m);
            bankAccountService.Withdraw(actualAccountNumber, 10m);

            repositoryMock.Verify(
                repository => repository.UpdateAccount(It.Is <DtoAccount>(account => account.AccountNumber == expectedAccountNumber)),
                Times.Exactly(2));
        }
Пример #4
0
        public static void Main(string[] args)
        {
            BankAccountService service = new BankAccountService(new FakeRepository(), new BankAccountsFactory());

            service.CreateAccount(AccountType.BaseAccount, 1, new Client("Brahinets", "Ilia", "Andreevich"), 0, 0);

            Console.ReadKey();
        }
Пример #5
0
        public void createAccountTest()
        {
            var account1 = _bankAccountService.CreateAccount(new BankAccount(100, "user1"));
            var account2 = _bankAccountService.CreateAccount(new BankAccount(1000, "user2"));

            Assert.IsNotNull(account1);
            Assert.IsNotNull(account2);
            Assert.IsInstanceOf(typeof(BankAccount), account1);
            Assert.IsInstanceOf(typeof(BankAccount), account2);
        }
Пример #6
0
        public void BankAccountRepository_GetAllAccountsTest(string firstName, string lastName, string email, string expectedAccountNumber)
        {
            var repositoryMock             = new Mock <IBankAccountRepository>();
            var accountNumberGeneratorMock = new Mock <IAccountNumberGenerator>(MockBehavior.Strict);

            accountNumberGeneratorMock.Setup(service => service.CreateNumber(new List <BankAccount>())).Returns(expectedAccountNumber);
            var bankAccountService = new BankAccountService(repositoryMock.Object);

            bankAccountService.CreateAccount(
                AccountType.Base,
                accountNumberGeneratorMock.Object,
                firstName,
                lastName,
                email);

            repositoryMock.Verify(repository => repository.GetAllAccounts(), Times.Once);
        }
Пример #7
0
        public void AccountNumberGenerator_CreateNumberTest(string firstName, string lastName, string email, string expectedAccountNumber)
        {
            var repositoryMock             = new Mock <IBankAccountRepository>();
            var accountNumberGeneratorMock = new Mock <IAccountNumberGenerator>(MockBehavior.Strict);

            accountNumberGeneratorMock.Setup(service => service.CreateNumber(new List <BankAccount>())).Returns(expectedAccountNumber);
            var bankAccountService = new BankAccountService(repositoryMock.Object);

            string actualAccountNumber = bankAccountService.CreateAccount(
                AccountType.Base,
                accountNumberGeneratorMock.Object,
                firstName,
                lastName,
                email);

            Assert.AreEqual(expectedAccountNumber, actualAccountNumber);
        }
Пример #8
0
        static void Main(string[] args)
        {
            BankAccount account1 = BankAccountService.CreateAccount("1", new Owner("John", "Doe"), BankAccountService.AccountType.Base, 100),
                        account2 = BankAccountService.CreateAccount("2", new Owner("Jane", "Doe"), BankAccountService.AccountType.Gold, 200);

            //Create account
            Console.WriteLine("Create account:");
            PrintAccount(account1);

            //Deposit
            Console.WriteLine("\nDeposit:");
            account1.Deposit(20);
            PrintAccount(account1);

            //Withdraw
            Console.WriteLine("\nWithdraw:");
            account1.Withdraw(50);
            PrintAccount(account1);

            //Close account
            Console.WriteLine("\nClose account:");
            account1.Close();
            PrintAccount(account1);

            //Work with files
            if (args.Length >= 1)
            {
                AccountBinaryReadWrite binaryReadWrite = new AccountBinaryReadWrite(args[0]);
                List <BankAccount>     accounts        = new List <BankAccount>();
                //Read collection from file
                try
                {
                    accounts = binaryReadWrite.CollectionRead().ToList();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                Console.WriteLine("\nRead list from file:");
                PrintAccounts(accounts);

                //Add account
                Console.WriteLine("\nAdd account:");
                accounts.Add(account2);
                PrintAccount(account2);

                //Deposit to account from list
                Console.WriteLine("\nDeposit first:");
                accounts[0].Deposit(50);
                PrintAccount(accounts[0]);

                //Save collection to file
                Console.WriteLine("\nSave to file:");
                binaryReadWrite.CollectionWrite(accounts);
                PrintAccounts(accounts);
            }
            else
            {
                Console.WriteLine("Enter source path");
            }

            Console.ReadLine();
        }