# -*- coding: UTF-8 -* """Unit tests for XML exports Usage: pytest tests/unit/test_export_xml.py """ # ScoDoc7 utilisait jaxml, obsolete et non portée en python3 # On teste ici les fonctions de remplacement, fournies par # notre nouveau module sco_xml.py import os import re import sys import unittest from app.scodoc import sco_xml from app.scodoc.gen_tables import GenTable # Legacy function # import jaxml # from app.scodoc import sco_utils as scu # r = scu.simple_dictlist2xml([{"id": 1, "ues": [{"note": 10}, {}]}], tagname="infos") def xml_normalize(x): "supprime espaces inutiles" x = re.sub(r"\s+", " ", str(x)).strip().replace("> <", "><") def xmls_compare(x, y): return xml_normalize(x) == xml_normalize(y) def test_export_xml(test_client): """exports XML compatibles ScoDoc 7""" # expected_result est le résultat de l'ancienne fonction ScoDoc7: for (data, expected_result) in ( ( [{"id": 1, "ues": [{"note": 10}, {}, {"valeur": 25}]}, {"bis": 2}], """ """, ), ([], """"""), ( ["allo"], """ """, ), ( [{}], """ """, ), ( [{"x": 1}], """ """, ), ( [{"y": [1, 2, 3], "x": 1}], """ """, ), ( [{"y": [{"x": 1}, {"y": [1, 2, 3]}], "x": 1}], """ """, ), ): # x = scu.simple_dictlist2xml(data, tagname="infos") y = sco_xml.simple_dictlist2xml(data, tagname="infos") assert xmls_compare(expected_result, y) # print("""({}, '''{}'''),""".format(data, str(x))) # test du sendXML compatible ScoDoc7 etuds = [{"x": 1, "etuds": ["allo", "mama"]}, {"x": 2, "etuds": ["un", "deux"]}] # Le résultat de l'ancien print(sendXML(etuds, tagname="etudiants")) expected_result = """ """ assert xmls_compare( expected_result, sco_xml.simple_dictlist2xml([{"etudiant": etuds}], tagname="etudiant_list"), ) # ---- Tables table = GenTable( rows=[{"nom": "Toto", "age": 26}, {"nom": "Titi", "age": 21}], columns_ids=("nom", "age"), ) table_xml = table.xml() expected_result = """
""" assert xmls_compare(table_xml, expected_result)