public void DefaultGetTransactions()
        {
            // arrange
            var controller = GetController();
            TransactionsController.Paging paging = new TransactionsController.Paging();
            PageContext pageContext = new PageContext();

            // act
            var result = controller.GetTransactions(paging, pageContext) as JsonResult;
            dynamic data = result.Data;
            List<Transaction> trans = data.items;

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Data);
            Assert.AreEqual(5, trans.Count);
        }
        public void TransactionsFilterByAccountId()
        {
            // arrange
            var controller = GetController();
            TransactionsController.Paging paging = new TransactionsController.Paging();
            PageContext pageContext = new PageContext();
            pageContext.AccountId = 2;

            // act
            var result = controller.GetTransactions(paging, pageContext) as JsonResult;
            dynamic data = result.Data;
            List<Transaction> trans = data.items;
            var tr = trans.FirstOrDefault();

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Data);
            Assert.AreEqual(1, trans.Count);
            Assert.AreEqual(2, tr.AccountId);
        }
        public void TransactionsFilterByCategoryId()
        {
            // arrange
            var controller = GetController();
            TransactionsController.Paging paging = new TransactionsController.Paging();
            PageContext pageContext = new PageContext();
            var fltrs = new List<TransactionsController.FilterHolder>();
            fltrs.Add(new TransactionsController.FilterHolder() { Name = "CategoryId", Value = "200", Type = "int" });
            JavaScriptSerializer js = new JavaScriptSerializer();
            paging.Filter = js.Serialize(fltrs);

            // act
            var result = controller.GetTransactions(paging, pageContext) as JsonResult;
            dynamic data = result.Data;
            List<Transaction> trans = data.items;
            var tr = trans.FirstOrDefault();

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Data);
            Assert.AreEqual(1, trans.Count);
            Assert.AreEqual(200, tr.CategoryId);
        }
        public void TransactionsFilterByStringCategoryMerchant()
        {
            // arrange
            var controller = GetController();
            TransactionsController.Paging paging = new TransactionsController.Paging();
            PageContext pageContext = new PageContext();
            var fltrs = new List<TransactionsController.FilterHolder>();
            fltrs.Add(new TransactionsController.FilterHolder() { Name = "ByString", Value = "Description" });
            //fltrs.Add(new TransactionsController.FilterHolder() { Name = "Merchant", Value = "test1 Merchant" });
            fltrs.Add(new TransactionsController.FilterHolder() { Name = "Description", Value = "test1 Description" });
            fltrs.Add(new TransactionsController.FilterHolder() { Name = "Category", Value = "test Cat3" });
            JavaScriptSerializer js = new JavaScriptSerializer();
            paging.Filter = js.Serialize(fltrs);

            // act
            var result = controller.GetTransactions(paging, pageContext) as JsonResult;
            dynamic data = result.Data;
            List<Transaction> trans = data.items;

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Data);
            Assert.AreEqual(1, trans.Count);
            Assert.IsNotNull(trans.FirstOrDefault(s => s.Merchant == "test1 Merchant"));
            Assert.IsNotNull(trans.FirstOrDefault(s => s.CategoryId == 221));
        }