/// <inheritdoc />
        public IEnumerable <ITransaction> FetchTransactions(ITransactionInputFormat format, ITransactionContext context)
        {
            if (format == null)
            {
                throw new ArgumentNullException(nameof(format));
            }
            if (!File.Exists(FilePath))
            {
                throw new InvalidOperationException($"Specified '{FilePath}' could not be found to read transactions from.");
            }

            using (var reader = new StreamReader(FilePath))
            {
                while (reader.Peek() >= 0)
                {
                    yield return(format.Parse(reader.ReadLine(), context));
                }
            }
        }
Exemplo n.º 2
0
            /// <inheritdoc />
            public IEnumerable <ITransaction> FetchTransactions(ITransactionInputFormat format, ITransactionContext context)
            {
                var transactionMock1 = new Moq.Mock <ITransaction>();

                transactionMock1.SetupGet(m => m.Amount).Returns(120);
                transactionMock1.SetupGet(m => m.Date).Returns(DateTime.Parse("2018-09-02"));
                transactionMock1.SetupGet(m => m.Merchant).Returns(context.Merchants.First(merchant => string.Equals(merchant.Name, "CIRCLE_K")));

                var transactionMock2 = new Moq.Mock <ITransaction>();

                transactionMock2.SetupGet(m => m.Amount).Returns(200);
                transactionMock2.SetupGet(m => m.Date).Returns(DateTime.Parse("2018-09-04"));
                transactionMock2.SetupGet(m => m.Merchant).Returns(context.Merchants.First(merchant => string.Equals(merchant.Name, "TELIA")));

                var transactionMock3 = new Moq.Mock <ITransaction>();

                transactionMock3.SetupGet(m => m.Amount).Returns(300);
                transactionMock3.SetupGet(m => m.Date).Returns(DateTime.Parse("2018-10-22"));
                transactionMock3.SetupGet(m => m.Merchant).Returns(context.Merchants.First(merchant => string.Equals(merchant.Name, "CIRCLE_K")));

                var transactionMock4 = new Moq.Mock <ITransaction>();

                transactionMock4.SetupGet(m => m.Amount).Returns(150);
                transactionMock4.SetupGet(m => m.Date).Returns(DateTime.Parse("2018-10-29"));
                transactionMock4.SetupGet(m => m.Merchant).Returns(context.Merchants.First(merchant => string.Equals(merchant.Name, "CIRCLE_K")));


                _transactionFeeResults = new[]
                {
                    "2018-09-02 CIRCLE_K   $1.20",
                    "2018-09-04 TELIA      $2.00",
                    "2018-10-22 CIRCLE_K   $3.00",
                    "2018-10-29 CIRCLE_K   $1.50"
                };

                return(new[]
                {
                    transactionMock1.Object,
                    transactionMock2.Object,
                    transactionMock3.Object,
                    transactionMock4.Object
                });;
            }