public void APIProcessing_ShouldProduceOutput_WhenCorrectDataProvided()
        {
            // Arrange
            var transactionProcessor = new TransactionsProcessor();
            var fakeFileHelper       = new FakeFileTransactionHelper();
            var consoleHelper        = new FakeConsoleHelper();

            transactionProcessor.ConsoleHelperProperty = consoleHelper;
            transactionProcessor.FileHelperProperty    = fakeFileHelper;
            var merchantProcessor = new MerchantsProcessor();

            merchantProcessor.ConsoleHelperProperty = new FakeConsoleHelper();
            merchantProcessor.FileHelperProperty    = new FakeFileMerchantHelper();
            var merchants = merchantProcessor.ReadMerchants("someFile");

            // Act
            transactionProcessor.ReadTransactions("someFile", merchants);

            // Assert
            var output = consoleHelper.ConsoleOutput.ToString();

            Assert.Equal("2018-09-01 7-ELEVEN 30.00\n2018-09-04 CIRCLE_K 30.60\n", output);
        }
        public void APIProcessing_ShouldProduceErrorMessage_WhenIncorrectMerchantDataProvided()
        {
            // Arrange
            var transactionProcessor = new TransactionsProcessor();
            var fakeFileHelper       = new FakeFileTransactionHelper();
            var consoleHelper        = new FakeConsoleHelper();

            transactionProcessor.ConsoleHelperProperty = consoleHelper;
            transactionProcessor.FileHelperProperty    = fakeFileHelper;
            var merchantProcessor = new MerchantsProcessor();

            merchantProcessor.ConsoleHelperProperty = new FakeConsoleHelper();
            merchantProcessor.FileHelperProperty    = new FakeFileMerchantWithIncorrectDataHelper();
            var merchants = merchantProcessor.ReadMerchants("someFile");

            // Act
            transactionProcessor.ReadTransactions("someFile", merchants);

            // Assert
            var output = consoleHelper.ConsoleOutput.ToString();

            Assert.Equal("Error while processing merchant data\nError while processing tramsaction data\n", output);
        }