commit aeeb5b5f2b4a32ec825da0ff8d9e6c9bdb1dc2c8
parent c4601d928e588a7639610cbc37b5e741990ca8ca
Author: MS <ms@taler.net>
Date: Tue, 8 Dec 2020 09:46:47 +0100
Parsing tests.
Importing here the tests runner, and keep only the
samples in a separate repository.
Diffstat:
1 file changed, 44 insertions(+), 0 deletions(-)
diff --git a/parsing-tests/checks.py b/parsing-tests/checks.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+import json
+from deepdiff import DeepDiff
+from subprocess import Popen, PIPE
+
+# return dict with parse-result.
+def call_parser(xml_file):
+ assert os.path.isfile(xml_file)
+ xml_file_abs = os.path.abspath(xml_file)
+ with Popen([
+ "../gradlew",
+ "--console=plain",
+ "-q",
+ "-p",
+ "..",
+ "nexus:run",
+ f"--args=parse-camt {xml_file_abs}"],
+ stdout=PIPE
+ ) as proc:
+ stdout = proc.communicate()[0]
+ assert proc.returncode == 0
+ return json.loads(stdout)
+
+def get_json_from_disk(json_file):
+ json_file_abs = os.path.abspath(json_file)
+ with open(json_file_abs) as j:
+ return json.load(j)
+
+def assert_json_equal(json1, json2):
+ diff = DeepDiff(json1, json2, ignore_order=True, report_repetition=True)
+ assert len(diff.keys()) == 0
+
+def test_camt53_example3():
+ parsed = call_parser("./samples/camt53_example3.xml")
+ entries = parsed["reports"][0]["entries"]
+ # The following checks ensure that each money movement is a singleton.
+ assert(len(entries) == 4)
+ assert(len(entries[0]["batches"][0]["batchTransactions"]) == 1)
+ assert(len(entries[1]["batches"][0]["batchTransactions"]) == 1)
+ assert(len(entries[2]["batches"][0]["batchTransactions"]) == 1)
+ assert(len(entries[3]["batches"][0]["batchTransactions"]) == 1)