public void SelectCardAccountFees_ReturnsIsaFeeTransactions_GivenTransactionList()
        {
            //Arrange
            var transactions = new List <TransactionModel>
            {
                new TransactionModel {
                    TransactionTypeCategory = "Spend", Description = "Purchase",
                }
            };

            var expectedFees = new List <TransactionModel>
            {
                new TransactionModel {
                    TransactionTypeCategory = "CardAccountFee", Description = "ISA Fee",
                },
                new TransactionModel {
                    TransactionTypeCategory = "CardAccountFee", Description = "ISA Fee Adjustment",
                },
            };

            transactions.AddRange(expectedFees);

            var chTransactions = new CardholderTransactions(transactions);

            //Act
            List <TransactionModel> actualFees = chTransactions.SelectCardAccountFees();

            //Assert
            Assert.Equal(expectedFees, actualFees);
        }
        public static List <TransactionModel> SelectCardAccountFees(this CardholderTransactions transactions)
        {
            var result = transactions?.Where(t =>
                                             t.TransactionTypeCategory.Equals(CardAccountFeeCategory,
                                                                              StringComparison.InvariantCultureIgnoreCase))
                         .ToList();

            return(result);
        }
        public static List <TransactionModel> SelectTransactionsToSync(this CardholderTransactions transactions,
                                                                       bool approvedOnly, string syncedNote = "")
        {
            var result = transactions?.Where(t =>
                                             (t.TransactionType == TransactionType.Network || (t.TransactionType == TransactionType.Transfer && t.TransactionTypeCategory == DisputeCategory)) &&
                                             (string.IsNullOrEmpty(syncedNote) ||
                                              !(t.TransactionNotes?.Exists(n => n.NoteText.ToLower().Contains(syncedNote.ToLower())) ??
                                                false)) &&
                                             (!approvedOnly || (t.MetadataApprovalStatus?.Equals(MetadataApprovalStatusApproved,
                                                                                                 StringComparison.InvariantCultureIgnoreCase) ?? false)))
                         .ToList();

            return(result ?? new List <TransactionModel>());
        }