public void SetUp()
        {
            // setup fake model
            _bmAccount = new Account
            {
                AssetId       = 1,
                AssetName     = "a",
                AssetTypeId   = 2,
                AssetTypeName = "b",
            };
            _bmAccountTransaction = new AccountTransaction
            {
                AssetTransactionId = 3,
                AssetId            = _bmAccount.AssetId,
                AssetName          = _bmAccount.AssetName,
                AssetTypeId        = _bmAccount.AssetTypeId,
                AssetTypeName      = _bmAccount.AssetTypeName,
                DueDate            = new DateTime(2018, 1, 2),
                ClearDate          = new DateTime(2018, 3, 4),
                Amount             = 123.45M,
                Note = "abc",
            };

            // setup DbContext
            Setup_FakeDbContext();

            // setup uow
            _fakeUnitOfWork = new UnitOfWork(_fakeDbContext);

            // setup Service
            _fakeBusinessService = new BusinessService(_fakeUnitOfWork);

            // setup controller
            _controller = new AccountTransactionController(_fakeBusinessService);
        }
        public void Create_WhenCalled_ReturnTransactionCategorySelectList_Test()
        {
            Setup_FakeService();

            _controller = new AccountTransactionController(_fakeBusinessService);

            var result = (ViewResult)_controller.Create(assetId: null);

            var vmResult = (CreateViewModel)result.ViewData.Model;

            Assert.That(vmResult.TransactionCategories, Is.Not.EqualTo(null));
        }
        public void Create_WhenCalled_ShouldCallOneTimeGetTransactionCategorySelectList_Test()
        {
            _mockBusinessService = new Mock <IBusinessService>();
            _mockBusinessService.Setup(bs => bs.AccountTransactionService.GetTransactionCategorySelectList(null))
            .Returns(It.IsAny <List <SelectListItem> >());

            _controller = new AccountTransactionController(_mockBusinessService.Object);

            _controller.Create(assetId: null);

            _mockBusinessService.Verify(bs => bs.AccountTransactionService.GetTransactionCategorySelectList(It.IsAny <string>()),
                                        Times.Once);
        }
        public void Create_WhenCalled_ShouldCallOneTimeGetAccountForTransaction_Test()
        {
            _mockBusinessService = new Mock <IBusinessService>();
            _mockBusinessService.Setup(bs => bs.AccountTransactionService.GetAccountForTransaction(null))
            .Returns(It.IsAny <Account>());

            _controller = new AccountTransactionController(_mockBusinessService.Object);

            _controller.Create(assetId: null);

            _mockBusinessService.Verify(bs => bs.AccountTransactionService.GetAccountForTransaction(It.IsAny <int?>()),
                                        Times.Once);
        }
        public void Index_WhenCalled_ShouldCallOneTimeAccountTransactionServiceMethodGetListOfActiveTransactions_Test()
        {
            _mockBusinessService = new Mock <IBusinessService>();
            _mockBusinessService.Setup(bs => bs.AccountTransactionService.GetListOfActiveTransactions())
            .Returns(It.IsAny <List <AccountTransaction> >);

            _controller = new AccountTransactionController(_mockBusinessService.Object);

            _controller.Index();

            _mockBusinessService.Verify(bs => bs.AccountTransactionService.GetListOfActiveTransactions(),
                                        Times.Once);
        }
        private void SetUp_Service_AccountTransactions_OrderedAscendingByDueDate(DateTime olderDueDate, DateTime newerDueDate)
        {
            _mockBusinessService.Setup(bs => bs.AccountTransactionService.GetListOfActiveTransactions())
            .Returns(new List <AccountTransaction>
            {
                new AccountTransaction
                {
                    AssetTransactionId = 1, AssetId = 2, AssetName = "a", AssetTypeId = 3, AssetTypeName = "b",
                    DueDate            = olderDueDate, ClearDate = new DateTime(2018, 5, 6), Amount = 123.45M, Note = "abc",
                },
                new AccountTransaction
                {
                    AssetTransactionId = 1, AssetId = 2, AssetName = "a", AssetTypeId = 3, AssetTypeName = "b",
                    DueDate            = newerDueDate, ClearDate = new DateTime(2018, 5, 6), Amount = 123.45M, Note = "abc",
                },
            });

            _controller = new AccountTransactionController(_mockBusinessService.Object);
        }