public void GetMyAccountsDetail_WhenProvideLowellReference_With_FiveTransactions_Then_OutputsFiveTransactions()
        {
            // NOTE: Not testing 5 transactions (or more) because the number of transactions is controlled
            // by the proxy call (to CaseFlow)

            // Arrange
            const string userId          = "anyuser123";
            const string lowellReference = "wibble";

            CaseFlowMyAccountsDetailDto caseFlowAccountDto = new CaseFlowMyAccountsDetailDto();
            RecievedTransactionsDto     caseFlowReceivedTransactionsDto = new RecievedTransactionsDto()
            {
                Payments = new List <PaymentDetails>()
                {
                    new PaymentDetails()
                    {
                        Date           = new DateTime(2018, 11, 25),
                        Amount         = 123.45M,
                        Type           = "Type",
                        RollingBalance = 678.91M
                    },
                    new PaymentDetails()
                    {
                        Date           = new DateTime(2017, 10, 13),
                        Amount         = 9999.99M,
                        Type           = "Type II",
                        RollingBalance = 1000000.01M
                    }
                }
            };

            _mockGetDetailsProcess.Setup(x => x.GetMyAccountsDetail(lowellReference)).Returns(Task.FromResult(caseFlowAccountDto));
            _mockMyAccountDetailGetTransactionsRecentProcess.Setup(x => x.GetTransactionsRecent(lowellReference, 5)).Returns(Task.FromResult(caseFlowReceivedTransactionsDto));

            // Act
            MyAccountsDetailResultDto resultDto = _service.GetMyAccountsDetail(userId, lowellReference).Result;

            // Assert
            Assert.AreEqual(2, resultDto.RecentTransactions.Count);
            {
                MyAccountsDetailResultDto.RecentTransaction transaction = resultDto.RecentTransactions[0];
                Assert.AreEqual(new DateTime(2018, 11, 25), transaction.Date);
                Assert.AreEqual(123.45M, transaction.Amount);
                Assert.AreEqual("Type", transaction.Type);
                Assert.AreEqual(678.91M, transaction.RollingBalance);
            }
            {
                MyAccountsDetailResultDto.RecentTransaction transaction = resultDto.RecentTransactions[1];
                Assert.AreEqual(new DateTime(2017, 10, 13), transaction.Date);
                Assert.AreEqual(9999.99M, transaction.Amount);
                Assert.AreEqual("Type II", transaction.Type);
                Assert.AreEqual(1000000.01M, transaction.RollingBalance);
            }

            _mockMyAccountDetailGetTransactionsRecentProcess.Verify(x => x.GetTransactionsRecent(lowellReference, 5), Times.Once);
        }
        public void GetMyAccountsDetail_WhenProvideLowellReference_With_NoTransactions_Then_OutputsEmptyTransactionsList()
        {
            // Arrange
            const string userId          = "anyuser123";
            const string lowellReference = "wibble";

            CaseFlowMyAccountsDetailDto caseFlowAccountDto = new CaseFlowMyAccountsDetailDto();
            RecievedTransactionsDto     caseFlowReceivedTransactionsDto = new RecievedTransactionsDto();

            _mockGetDetailsProcess.Setup(x => x.GetMyAccountsDetail(lowellReference)).Returns(Task.FromResult(caseFlowAccountDto));
            _mockMyAccountDetailGetTransactionsRecentProcess.Setup(x => x.GetTransactionsRecent(lowellReference, 5)).Returns(Task.FromResult(caseFlowReceivedTransactionsDto));

            // Act
            MyAccountsDetailResultDto resultDto = _service.GetMyAccountsDetail(userId, lowellReference).Result;

            // Assert
            Assert.AreEqual(0, resultDto.RecentTransactions.Count);
        }
Пример #3
0
        public void GetTransactionsRecent_ShouldCallProxy_Once()
        {
            const string testLowellReference = "anything123";

            // Arrange
            // Content does not matter, as straight pass through of objects
            var caseFlowDto = new RecievedTransactionsDto();

            _mockProxy.Setup(x => x.GetTransactionsAsync(testLowellReference, 5))
            .Returns(Task.FromResult(caseFlowDto));

            //Act
            var result = _process.GetTransactionsRecent(testLowellReference, 5).Result;

            //Assert
            Assert.AreEqual(caseFlowDto, result);

            _mockProxy.Verify(x => x.GetTransactionsAsync(testLowellReference, 5), Times.Once);
        }
        // Provides interface to allow unit testing without being tied to 'now'
        internal async Task <MyAccountsDetailResultDto> GetMyAccountsDetail(string userId, string lowellReference, DateTime currentDateTime)
        {
            CaseFlowMyAccountsDetailDto caseFlowAccount = await _getDetailProcess.GetMyAccountsDetail(lowellReference);

            RecievedTransactionsDto caseFlowTransactions = await _getTransactionProcess.GetTransactionsRecent(lowellReference, 5);

            MyAccountsDetailResultDto resultDto = new MyAccountsDetailResultDto();

            PopulateCommonFields(caseFlowAccount, resultDto, currentDateTime);

            // Fields included in Detail only (not on My Accounts summary)
            resultDto.AccountMessage = caseFlowAccount.ExcludedMessage;

            resultDto.PlanMessages = caseFlowAccount.PlanMessages;

            resultDto.RecentTransactions = new List <MyAccountsDetailResultDto.RecentTransaction>();

            // CaseFlow returns empty content (and 204) if there are no transactions, rather than empty list
            if (caseFlowTransactions != null)
            {
                foreach (PaymentDetails payment in caseFlowTransactions.Payments)
                {
                    MyAccountsDetailResultDto.RecentTransaction transaction =
                        new MyAccountsDetailResultDto.RecentTransaction()
                    {
                        Date           = payment.Date,
                        Amount         = payment.Amount,
                        Description    = payment.Description,
                        Type           = payment.Type,
                        RollingBalance = payment.RollingBalance
                    };

                    resultDto.RecentTransactions.Add(transaction);
                }
            }

            return(resultDto);
        }