public void ShouldProcessOfficialAbnAmroBankExportFile()
        {
            var inputFileData        = File.ReadAllText(Path.Combine(LocationOfTestFiles, "THREE_MONTH_ABN_AMRO_EXPORT_FILE.TAB"));
            var inputCategoryMapJson = File.ReadAllText(Path.Combine(LocationOfTestFiles, "TestCategories.json"));

            var parser    = new TransactionParser(inputFileData);
            var processor = new TransactionProcessor(parser, inputCategoryMapJson);
            var cr        = new CategoryReporter(processor);

            var report = cr.CreateReport();

            StringAssert.Contains("unknown: 2453.43 EUR", report);
        }
        public void ReportAmountPerCategory()
        {
            var categoryMapJsonString =
                "{" +
                "\"Categories\": " +
                "[ " +
                "{" +
                "\"Keyword\": \"wallgreens\"," +
                "\"CategoryName\": \"groceries\" " +
                "}," +
                "{" +
                "\"Keyword\": \"wallmart\"," +
                "\"CategoryName\": \"groceries\" " +
                "}," +
                "{" +
                "\"Keyword\": \"visa\"," +
                "\"CategoryName\": \"finances\" " +
                "}," +
                "{" +
                "\"Keyword\": \"mortgage\"," +
                "\"CategoryName\": \"finances\" " +
                "}" +
                "]" +
                "}";

            var transactionParserMock = new Mock <ITransactionParser>();

            transactionParserMock.Setup(x => x.Parse()).Returns(new List <Transaction>
            {
                new Transaction(-10.00M, "xyz", new DateTime(2020, 1, 1)),
                new Transaction(-10.00M, "mortgage inc.", new DateTime(2020, 1, 1)),
                new Transaction(-30.00M, "VISA", new DateTime(2020, 1, 1)),
            });

            var processor = new TransactionProcessor(transactionParserMock.Object, categoryMapJsonString);
            var cr        = new CategoryReporter(processor);

            var report = cr.CreateReport();

            StringAssert.Contains("finances: -40.00 EUR", report);
        }