diff options
author | Tibor Szabó <szabootibor@gmail.com> | 2021-05-13 23:02:10 +0200 |
---|---|---|
committer | Tibor Szabó <szabootibor@gmail.com> | 2021-05-13 23:02:10 +0200 |
commit | 06e621ba9ac01657c56e00fbd268741337f2c0bb (patch) | |
tree | 7f03f88ed50a5ff953942f99c8a39e2dd86bef4f | |
parent | 2ae890d7cf874778f5d031d34441603be91fc86e (diff) |
Add testcases
-rw-r--r-- | tests/test_ec_importer.py | 202 |
1 files changed, 201 insertions, 1 deletions
diff --git a/tests/test_ec_importer.py b/tests/test_ec_importer.py index c4b3078..b20deaf 100644 --- a/tests/test_ec_importer.py +++ b/tests/test_ec_importer.py @@ -4,6 +4,7 @@ from tempfile import gettempdir from textwrap import dedent from unittest import TestCase import os +from datetime import date from beancount_ing_diba.ec import BANKS, ECImporter, PRE_HEADER @@ -371,6 +372,205 @@ class ECImporterTestCase(TestCase): with open(self.filename) as fd: transactions = importer.extract(fd) - # 1 transaction + 1 balance assertion (opening balance can not be calculated due to currency mismatch) + # 1 transaction + 1 balance assertion + # (opening balance cannot be calculated due to currency mismatch) self.assertEqual(len(transactions), 1 + 1) self.assertEqual(transactions[0].postings[0].units.currency, 'EUR') + + def test_bad_sorting_no_balances(self): + with open(self.filename, 'wb') as fd: + fd.write( + self._format_data( + ''' + Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00 + + IBAN;{formatted_iban} + Kontoname;Extra-Konto + Bank;ING-DiBa + Kunde;{user} + Zeitraum;01.06.2018 - 30.06.2018 + Saldo;5.000,00;EUR + + Sortierung;Betrag absteigend + + {pre_header} + + "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung" + 08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;USD;-500,00;EUR + ''' # NOQA + ) + ) + + importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user) + + with open(self.filename) as fd: + transactions = importer.extract(fd) + + # 1 transaction + no balance assertion (not sorted by date) + self.assertEqual(len(transactions), 1) + + def test_ascending_by_date_single(self): + with open(self.filename, 'wb') as fd: + fd.write( + self._format_data( + ''' + Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00 + + IBAN;{formatted_iban} + Kontoname;Extra-Konto + Bank;ING-DiBa + Kunde;{user} + Zeitraum;01.06.2018 - 30.06.2018 + Saldo;5.000,00;EUR + + Sortierung;Datum aufsteigend + + {pre_header} + + "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung" + 08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR + ''' # NOQA + ) + ) + + importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user) + + with open(self.filename) as fd: + transactions = importer.extract(fd) + + # 1 transaction + 2 balance assertions + self.assertEqual(len(transactions), 1 + 2) + # Test opening balance + self.assertEqual(transactions[1].date, date(2018, 6, 1)) + self.assertEqual(transactions[1].amount.number, 1734.0) + self.assertEqual(transactions[1].amount.currency, 'EUR') + # Test closing balance + self.assertEqual(transactions[2].date, date(2018, 7, 1)) + self.assertEqual(transactions[2].amount.number, 1234.0) + self.assertEqual(transactions[2].amount.currency, 'EUR') + + def test_ascending_by_date_multiple(self): + with open(self.filename, 'wb') as fd: + fd.write( + self._format_data( + ''' + Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00 + + IBAN;{formatted_iban} + Kontoname;Extra-Konto + Bank;ING-DiBa + Kunde;{user} + Zeitraum;01.06.2018 - 30.06.2018 + Saldo;5.000,00;EUR + + Sortierung;Datum aufsteigend + + {pre_header} + + "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung" + 08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR + 08.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.200,00;EUR;-34,00;EUR + 15.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.100,00;EUR;-100,00;EUR + 15.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.000,00;EUR;-100,00;EUR + ''' # NOQA + ) + ) + + importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user) + + with open(self.filename) as fd: + transactions = importer.extract(fd) + + # 4 transactions + 2 balance assertions + self.assertEqual(len(transactions), 4 + 2) + # Test opening balance + self.assertEqual(transactions[4].date, date(2018, 6, 1)) + self.assertEqual(transactions[4].amount.number, 1734.0) + self.assertEqual(transactions[4].amount.currency, 'EUR') + # Test closing balance + self.assertEqual(transactions[5].date, date(2018, 7, 1)) + self.assertEqual(transactions[5].amount.number, 1000.0) + self.assertEqual(transactions[5].amount.currency, 'EUR') + + def test_descending_by_date_single(self): + with open(self.filename, 'wb') as fd: + fd.write( + self._format_data( + ''' + Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00 + + IBAN;{formatted_iban} + Kontoname;Extra-Konto + Bank;ING-DiBa + Kunde;{user} + Zeitraum;01.06.2018 - 30.06.2018 + Saldo;5.000,00;EUR + + Sortierung;Datum absteigend + + {pre_header} + + "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung" + 08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR + ''' # NOQA + ) + ) + + importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user) + + with open(self.filename) as fd: + transactions = importer.extract(fd) + + # 1 transaction + 2 balance assertions + self.assertEqual(len(transactions), 1 + 2) + # Test opening balance + self.assertEqual(transactions[1].date, date(2018, 6, 1)) + self.assertEqual(transactions[1].amount.number, 1734.0) + self.assertEqual(transactions[1].amount.currency, 'EUR') + # Test closing balance + self.assertEqual(transactions[2].date, date(2018, 7, 1)) + self.assertEqual(transactions[2].amount.number, 1234.0) + self.assertEqual(transactions[2].amount.currency, 'EUR') + + def test_descending_by_date_multiple(self): + with open(self.filename, 'wb') as fd: + fd.write( + self._format_data( + ''' + Umsatzanzeige;Datei erstellt am: 25.07.2018 12:00 + + IBAN;{formatted_iban} + Kontoname;Extra-Konto + Bank;ING-DiBa + Kunde;{user} + Zeitraum;01.06.2018 - 30.06.2018 + Saldo;5.000,00;EUR + + Sortierung;Datum absteigend + + {pre_header} + + "Buchung";"Valuta";"Auftraggeber/Empfänger";"Buchungstext";"Kategorie";"Verwendungszweck";"Saldo";"Währung";"Betrag";"Währung" + 15.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.000,00;EUR;-100,00;EUR + 15.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.100,00;EUR;-100,00;EUR + 08.06.2018;08.06.2018;LIDL;Lastschrift;Kategorie;LIDL SAGT DANKE;1.200,00;EUR;-34,00;EUR + 08.06.2018;08.06.2018;REWE Filialen Voll;Gutschrift;Kategorie;REWE SAGT DANKE;1.234,00;EUR;-500,00;EUR + ''' # NOQA + ) + ) + + importer = ECImporter(self.iban, 'Assets:ING-DiBa:Extra', self.user) + + with open(self.filename) as fd: + transactions = importer.extract(fd) + + # 4 transactions + 2 balance assertions + self.assertEqual(len(transactions), 4 + 2) + # Test opening balance + self.assertEqual(transactions[4].date, date(2018, 6, 1)) + self.assertEqual(transactions[4].amount.number, 1734.0) + self.assertEqual(transactions[4].amount.currency, 'EUR') + # Test closing balance + self.assertEqual(transactions[5].date, date(2018, 7, 1)) + self.assertEqual(transactions[5].amount.number, 1000.0) + self.assertEqual(transactions[5].amount.currency, 'EUR') |