Ejemplo n.º 1
0
        public void CantCreateNegativeBalanceAccount()
        {
            // Arrange
            Currency fakeCurrency = new Currency(1d, "fakemonies", '!');
            HumanAcccountHolder hah = new HumanAcccountHolder("TestUser", "TestPass", new string[] { "First", "middle1", "middle2", "Last" });

            // Act
            Account acctDefault = new Account(hah,0d,-200d, fakeCurrency);
        }
        public void CanCreateJsonDal()
        {
            // Arrange
            JsonFileAccessLayer fal = new JsonFileAccessLayer("C:\\testAcct.act");
            HumanAcccountHolder hah = new HumanAcccountHolder("TestUser", "TestPass", new string[] { "Test", "McTester" });
            Account act = new Account(hah, 0d, 0d, new Currency(1d, "fakemonies", '!'));

            // Act
            fal.SaveAccount(act);
        }
Ejemplo n.º 3
0
        public void CanCreateZeroBalanceAccount()
        {
            // Arrange
            HumanAcccountHolder hah = new HumanAcccountHolder("TestUser", "TestPass", new string[] { "First", "middle1", "middle2", "Last" });
            Currency fakeCurrency = new Currency(1d, "fakemonies", '!');

            // Act
            Account acctManual = new Account(hah,0d,0d,fakeCurrency);

            // Assert
            Assert.AreEqual(0.0d, acctManual.Balance.ObjectiveValue);
        }
Ejemplo n.º 4
0
        public void NegativeBalancesSufferPenalties()
        {
            // Arrange
            HumanAcccountHolder hah = new HumanAcccountHolder("TestUser", "TestPass", new string[] { "First", "middle1", "middle2", "Last" });
            Currency fakeCurrency =  new Currency(1d, "fakemonies", '!');
            // Act

            Account acctDefault = new Account(hah, 50d, 200d, fakeCurrency);
            Transaction bigWithdrawal = new Transaction("Test over withdrawal", new Money(-400d,fakeCurrency), TransactionTypes.Withdrawal);
            acctDefault.PerformTransaction(bigWithdrawal);

            // Assert
            Assert.AreEqual(-250d, acctDefault.Balance.Value);
        }
Ejemplo n.º 5
0
        public static void CreateTestAccounts(IDataAccessLayer dal)
        {
            Account act = new Account(
                new HumanAcccountHolder("test", "test", new string[] { "some", "test", "guy" }), 0d, 100d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(act);

            Account act2 = new Account(
                new HumanAcccountHolder("test2", "test2", new string[] { "Totally", "Awesome", "Tester" }), 0d, 133.25d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(act2);

            Account act3 = new Account(
                new HumanAcccountHolder("test3", "test3", new string[] { "More", "People", "Fortesting" }), 0d, 133.25d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(act3);

            Account act4 = new Account(
                new HumanAcccountHolder("test4", "test4", new string[] { "Group", "Of", "Testination" }), 0d, 133.25d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(act4);

            Account act5 = new Account(
                new HumanAcccountHolder("test5", "test5", new string[] { "Major", "Testz", "Sotested" }), 0d, 133.25d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(act5);

            Account act6 = new Account(
                new HumanAcccountHolder("test6", "test6", new string[] { "Captain", "Testing", "Ofthetestiverse" }), 0d, 133.25d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(act6);

            Account cact = new Account(
                   new CompanyAccountHolder("admin", "admin", new string[] { "An ", "Admin", "Dude" }), 0d, 100d, AvailableCurrencies.CurrencyList[0]
                );

            dal.SaveAccount(cact);
        }
Ejemplo n.º 6
0
        public InquiryResult PerformInquiry(Account selectedAccount, Command toPerform, IDataAccessLayer dal, params string[] parameters)
        {
            List<string> responses = new List<string>();
            List<string> followUps = new List<string>();

            switch (toPerform.Inquiry)
            {
                case TransactionTypes.BalanceInquiry:
                    responses.Add(string.Format("Current Balance is:  {0}", selectedAccount.Balance));
                    break;
                case TransactionTypes.Deposit:
                    double depositing = 0d;
                    if (parameters != null && parameters.Count() > 0 && double.TryParse(parameters[0], out depositing))
                    {
                        responses.Add(string.Format("Deposited:  {0}", depositing));
                        selectedAccount.PerformTransaction(new Transaction("Deposited Funds", new Money(depositing, selectedAccount.LocalCurrency), toPerform.Inquiry));
                    }
                    break;
                case TransactionTypes.Withdrawal:
                    double withdrawing = 0d;
                    if (parameters != null && parameters.Count() > 0 && double.TryParse(parameters[0], out withdrawing))
                    {
                        responses.Add(string.Format("Withdrew:  {0}", withdrawing));
                        selectedAccount.PerformTransaction(new Transaction("Withdrew Funds", -new Money(withdrawing, selectedAccount.LocalCurrency), toPerform.Inquiry));
                    }
                    break;
                case TransactionTypes.ChangeCurrency:
                    Currency toSwitch = selectedAccount.LocalCurrency;
                    if (parameters != null && parameters.Count() > 0)
                    {
                        foreach (Currency c in AvailableCurrencies.CurrencyList)
                        {
                            if (c.Name == parameters[0])
                            {
                                toSwitch = c;
                                responses.Add(string.Format("Switching to currency:  {0}", c.Name));
                            }
                        }
                    }
                    selectedAccount.SwitchAccountCurrency(toSwitch);
                    responses.Add(string.Format("Completed currency exchange."));
                    goto case TransactionTypes.BalanceInquiry;
                default:
                    break;
            }

            return new InquiryResult(responses, followUps);
        }
Ejemplo n.º 7
0
        public InquiryResult PerformInquiry(Account selectedAccount, Command toPerform, IDataAccessLayer dal, params string[] parameters)
        {
            List<string> responses = new List<string>();
            List<string> followUps = new List<string>();

            switch (toPerform.Inquiry)
            {
                case TransactionTypes.ListAccounts:

                    List<Account> foundAccounts = new List<Account>();
                    int numberToLoad = 5;
                    int.TryParse(parameters[0], out numberToLoad);

                    bool descOrder = true;
                    if (parameters != null && parameters.Count() > 1 && parameters[1] == "asc")
                        descOrder = false;

                    if (descOrder)
                        foundAccounts.AddRange(dal.HighestAccounts(numberToLoad));
                    else
                        foundAccounts.AddRange(dal.LowestAccounts(numberToLoad));

                    foreach (Account act in foundAccounts)
                    {
                        responses.Add(string.Format("Account {0} has {1} in it and is owned by {2}", act.Id, act.Balance.ToString(), act.Owner.DisplayName));
                    }

                    break;
                case TransactionTypes.GetAccountAtDate:
                    if (parameters != null && parameters.Count() > 0)
                    {
                        DateTime targetDate = DateTime.MinValue;
                        if(DateTime.TryParse(parameters[0], out targetDate))
                        {
                            if (selectedAccount.TransactionHistory.Count() > 0)
                            {
                                List<Transaction> allTransInOrder = selectedAccount.TransactionHistory.OrderBy(x => x.Time).ToList();
                                Transaction lastTransaction = allTransInOrder[0];
                                foreach(var t in allTransInOrder)
                                {
                                    if (t.Time > lastTransaction.Time && t.Time < targetDate)
                                    {
                                        lastTransaction = t;
                                    }
                                }

                                responses.Add(string.Format("Account {0} had {1} on {2}", selectedAccount.Id, lastTransaction.BalanceAfter, targetDate));
                            }
                        }

                    }
                    break;
                default:
                    break;
            }

            return new InquiryResult(responses, followUps);
        }
Ejemplo n.º 8
0
 public InquiryResult PerformInquiry(Account selectedAccount, Command toPerform, IDataAccessLayer dal, params string[] parameters)
 {
     return injectedHolder.PerformInquiry(selectedAccount, toPerform, dal, parameters);
 }
Ejemplo n.º 9
0
        public void SaveAccount(Account toSave)
        {
            int indexOfAccount = allAccounts.FindIndex(x => x.Id == toSave.Id);
            if (indexOfAccount != -1)
                allAccounts[indexOfAccount] = toSave;
            else
                allAccounts.Add(toSave);

            updateFile();
        }