コード例 #1
0
        internal async Task <MyAccountsResultDto> GetMyAccountsSummary(string accountId, DateTime currentDateTime)
        {
            CaseFlowMyAccountsDto caseFlowDto = await _getProcess.GetMyAccountsSummary(accountId);

            MyAccountsResultDto resultDto = new MyAccountsResultDto();

            resultDto.Accounts = new List <MyAccountsSummaryResultDto>();

            foreach (ICaseFlowAccountCommon caseFlowSummaryDto in caseFlowDto.Summaries)
            {
                MyAccountsSummaryResultDto accountDto = new MyAccountsSummaryResultDto();
                PopulateCommonFields(caseFlowSummaryDto, accountDto, currentDateTime);

                resultDto.Accounts.Add(accountDto);
            }

            resultDto.Accounts.Sort(new AccountComparer());

            return(resultDto);
        }
コード例 #2
0
        public void GetMyAccounts_WhenProvidedUserId_RetrievesAccounts_And_OutputsTransformedModels()
        {
            // Arrange
            const string userId = "Anything456";

            CaseFlowMyAccountsDto caseFlowDto = new CaseFlowMyAccountsDto()
            {
                Summaries = new List <CaseFlowMyAccountsDto.AccountSummaryDto>()
                {
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        LowellReference    = "1234",
                        ClientName         = "BarclayBob",
                        OutstandingBalance = 1234.56M,
                        CanMakePayment     = false,

                        HasArrangement = true,
                        PlanType       = "Direct Debit",
                        PlanFrequency  = "Monthly",
                        RegularAccountPaymentAmount = 123.45M
                    },

                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        LowellReference    = "abc345",
                        ClientName         = "Wah",
                        OutstandingBalance = 101.22M,
                        CanMakePayment     = true,

                        // Ensure works with nulls
                        HasArrangement = false,
                        PlanType       = null,
                        PlanFrequency  = null,
                        RegularAccountPaymentAmount = null
                    },
                }
            };

            _mockGetProcess.Setup(x => x.GetMyAccounts(userId)).Returns(Task.FromResult(caseFlowDto));

            // Act
            MyAccountsResultDto resultDto = _service.GetMyAccounts(userId).Result;

            // Assert
            Assert.AreEqual(2, resultDto.Accounts.Count);
            {
                MyAccountsSummaryResultDto account = resultDto.Accounts[0];
                Assert.AreEqual("1234", account.AccountReference);
                Assert.AreEqual("BarclayBob", account.OriginalCompany);
                Assert.AreEqual(1234.56M, account.OutstandingBalance);
                Assert.AreEqual(false, account.CanMakePayment);

                Assert.AreEqual("Direct Debit", account.PaymentPlanMethod);
                Assert.AreEqual("Monthly", account.PaymentPlanFrequency);
                Assert.AreEqual(123.45M, account.PaymentPlanAmount);
            }
            {
                MyAccountsSummaryResultDto account = resultDto.Accounts[1];
                Assert.AreEqual("abc345", account.AccountReference);
                Assert.AreEqual("Wah", account.OriginalCompany);
                Assert.AreEqual(101.22M, account.OutstandingBalance);
                Assert.AreEqual(true, account.CanMakePayment);

                Assert.AreEqual(null, account.PaymentPlanMethod);
                Assert.AreEqual(null, account.PaymentPlanFrequency);
                Assert.AreEqual(null, account.PaymentPlanAmount);
            }
        }
コード例 #3
0
        public void GetMyAccountsSummary_WhenProvidedAccountId_RetrievesAccounts_CallsStatusDeriver_And_OrdersCorrectlyByStatusSortThenAccountName()
        {
            // Note: using mock Status Deriver, so as to avoid exhaustively testing statuses here, as responsibility
            // for deriving statuses is with concrete Status Deriver class

            // Mock will apply some status sort (and status) values, allowing testing of sort / sub-sort behaviour
            // in service class under test

            _mockStatusDeriverProcess.Setup(x => x.DeriveStatusAndStatusSort(
                                                It.IsAny <ICaseFlowAccountCommon>(),
                                                It.IsAny <MyAccountsSummaryResultDto>()))
            .Callback <ICaseFlowAccountCommon, MyAccountsSummaryResultDto>(
                (caseFlowAccountDto, resultDto) =>
            {
                // Status deriver places 'Company' (long integer) field into sort field to facilitate testing
                Debug.Assert(caseFlowAccountDto.Company != null);
                resultDto.AccountStatusSort = (int)caseFlowAccountDto.Company.Value;
            });

            // Get returns some CaseFlow dto's with mixed up sort ordering
            // Ordering is by AccountStatusSort then ClientName
            CaseFlowMyAccountsDto caseFlowDto = new CaseFlowMyAccountsDto()
            {
                Summaries = new List <CaseFlowMyAccountsDto.AccountSummaryDto>()
                {
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 4, ClientName = "Def"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 100, ClientName = "jjj"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 3, ClientName = "1a"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 1, ClientName = "zzz"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 4, ClientName = "Ghi"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 3, ClientName = "1b"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 4, ClientName = "Abc"
                    },
                    new CaseFlowMyAccountsDto.AccountSummaryDto()
                    {
                        Company = 2, ClientName = "wibble"
                    },
                }
            };

            _mockGetProcess.Setup(x => x.GetMyAccountsSummary("anything")).Returns(Task.FromResult(caseFlowDto));

            //
            // Check output is correctly ordered
            //
            MyAccountsResultDto outputDto = _service.GetMyAccountsSummary("anything").Result;

            Assert.AreEqual(8, outputDto.Accounts.Count);

            // Sort Value 1
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[0];
                Assert.AreEqual("zzz", accountDto.OriginalCompany);
                Assert.AreEqual(1, accountDto.AccountStatusSort);
            }

            // Sort Value 2
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[1];
                Assert.AreEqual("wibble", accountDto.OriginalCompany);
                Assert.AreEqual(2, accountDto.AccountStatusSort);
            }

            // Sort Value 3
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[2];
                Assert.AreEqual("1a", accountDto.OriginalCompany);
                Assert.AreEqual(3, accountDto.AccountStatusSort);
            }
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[3];
                Assert.AreEqual("1b", accountDto.OriginalCompany);
                Assert.AreEqual(3, accountDto.AccountStatusSort);
            }

            // Sort Value 4
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[4];
                Assert.AreEqual("Abc", accountDto.OriginalCompany);
                Assert.AreEqual(4, accountDto.AccountStatusSort);
            }
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[5];
                Assert.AreEqual("Def", accountDto.OriginalCompany);
                Assert.AreEqual(4, accountDto.AccountStatusSort);
            }
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[6];
                Assert.AreEqual("Ghi", accountDto.OriginalCompany);
                Assert.AreEqual(4, accountDto.AccountStatusSort);
            }

            // Sort Value 100
            {
                MyAccountsSummaryResultDto accountDto = outputDto.Accounts[7];
                Assert.AreEqual("jjj", accountDto.OriginalCompany);
                Assert.AreEqual(100, accountDto.AccountStatusSort);
            }
        }