public void GetAllTransactionsOnSortablePayeeWithDateRangeAndOrderDescendingReturnsSortedTransactionCollection()
        {
            DataHelper.NewDb();
            var payee   = "Sortable Payee";
            var payeeId = DataHelper.Payees.Where(a => a.Name == payee).SingleOrDefault().Id;

            var service = new RentalsService();

            var expected = DataHelper.Transactions
                           .Where(t => t.PayeeId == payeeId &&
                                  t.Date >= DateTime.Today.AddMonths(-6) &&
                                  t.Date <= DateTime.Today);
            var actual = service.GetAllTransactionsWithAccountAndPayeeAndCategory(
                null, payee, null,
                DateTime.Today.AddMonths(-6), DateTime.Today, false);

            Assert.IsNotNull(actual);

            var order = actual.First().Amount;

            foreach (var transaction in actual)
            {
                Assert.AreEqual(order, transaction.Amount);
                order -= 1.00m;
            }
        }
        public void GetAllTransactionsWhenSearchedOnAccountAndPayeeAndCategoryReturnsSortedTransactionCollection()
        {
            DataHelper.NewDb();
            var account    = "sort";
            var accountId  = DataHelper.Accounts.Where(a => a.Name.ToLower().Contains(account)).SingleOrDefault().Id;
            var payee      = "gas";
            var payeeId    = DataHelper.Payees.Where(a => a.Name.ToLower().Contains(payee)).SingleOrDefault().Id;
            var category   = "charges";
            var categoryId = DataHelper.Categories.Where(a => a.Name.ToLower().Contains(category)).SingleOrDefault().Id;

            var service = new RentalsService();

            var expectedAccountMatches = DataHelper.Transactions
                                         .Where(t => t.AccountId == accountId &&
                                                t.Date >= DateTime.Today.AddMonths(-6) &&
                                                t.Date <= DateTime.Today).Count();
            var expectedPayeeMatches = DataHelper.Transactions
                                       .Where(t => t.PayeeId == payeeId &&
                                              t.Date >= DateTime.Today.AddMonths(-6) &&
                                              t.Date <= DateTime.Today).Count();
            var expectedCategoryMatches = DataHelper.Transactions
                                          .Where(t => t.CategoryId == categoryId &&
                                                 t.Date >= DateTime.Today.AddMonths(-6) &&
                                                 t.Date <= DateTime.Today).Count();
            var actual = service.GetAllTransactionsWithAccountAndPayeeAndCategory(
                account, payee, category,
                DateTime.Today.AddMonths(-6), DateTime.Today, true);

            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedAccountMatches, actual.Count(t => t.AccountId == accountId));
            Assert.AreEqual(expectedPayeeMatches, actual.Count(t => t.PayeeId == payeeId));
            Assert.AreEqual(expectedCategoryMatches, actual.Count(t => t.CategoryId == categoryId));
        }
        public void CanDeleteTransaction()
        {
            DataHelper.NewDb();

            var service = new RentalsService();

            service.RemoveTransaction(1);

            Assert.AreEqual(DataHelper.Transactions.Count - 1, service.GetAllTransactionsWithAccountAndPayeeAndCategory().Count);
        }
        public void GetAllTransactionsWithNoFilteringReturnsAllTransactionsCollection()
        {
            DataHelper.NewDb();

            var service = new RentalsService();

            var actual = service.GetAllTransactionsWithAccountAndPayeeAndCategory();

            Assert.IsNotNull(actual);
            Assert.AreEqual(DataHelper.Transactions.Count, actual.Count);
        }
        public void GetAllTransactionsWithDateTomorrowReturnsEmptyTransactionCollection()
        {
            DataHelper.NewDb();

            var service = new RentalsService();

            var actual = service.GetAllTransactionsWithAccountAndPayeeAndCategory(
                null, null, null,
                DateTime.Today.AddDays(1), DateTime.Today.AddDays(1));

            Assert.IsNotNull(actual);
            Assert.AreEqual(0, actual.Count);
        }
        public void GetAllTransactionsOnSortableAccountWithDateTodayReturnsTransactionCollection()
        {
            DataHelper.NewDb();
            var account   = "Sortable Account";
            var accountId = DataHelper.Accounts.Where(a => a.Name == account).SingleOrDefault().Id;

            var service = new RentalsService();

            var expected = DataHelper.Transactions
                           .Where(t => t.AccountId == accountId &&
                                  t.Date == DateTime.Today);
            var actual = service.GetAllTransactionsWithAccountAndPayeeAndCategory(
                account, null, null,
                DateTime.Today, DateTime.Today);

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Count(), actual.Count);
        }