def test_parse_custom_element(self): tmpl = b""" <root> <example attr1="1" attr2="sdf" /> </root> """ @registry.element('example') class Example(BaseElement): pass parser = Parser(environment=Environment(loader=None)) template = parser.parse(tmpl, template_name='test') self.assertIsInstance(template.root_element, BaseElement) self.assertIsInstance(template.root_element.children[0], Example)
def test_parse_attributes(self): tmpl = b""" <root xmlns:c="http://example.org"> <child attr1="val1" c:attr2="val2" /> <child2></child2> </root> """ parser = Parser(environment=Environment(loader=None)) template = parser.parse(tmpl, template_name='test') child1 = template.root_element.children[0] self.assertSequenceEqual(list(child1.xml_attrs.keys()), ['attr1', '{http://example.org}attr2']) self.assertSequenceEqual(list(child1.xml_attrs.values()), ['val1', 'val2']) child2 = template.root_element.children[1] self.assertEqual(child2.xml_attrs, {})
def test_parse_tree(self): tmpl = b""" <root> <child1> <subchild></subchild> </child1> <child2> <subchild></subchild> <subchildd></subchildd> </child2> </root> """ parser = Parser(environment=Environment(loader=None)) template = parser.parse(tmpl, template_name='test') root = template.root_element self.assertIsInstance(root, BaseElement) self.assertEqual(root.parent, None) self.assertEqual(len(root.children), 2) self.assertEqual(root.children[0].xml_tag, 'child1') self.assertEqual(root.children[1].xml_tag, 'child2') self.assertEqual(len(root.children[0].children), 1) self.assertEqual(len(root.children[1].children), 2)
def test_parse_text(self): tmpl = b""" <root> some example text <child1>child1</child1> exmaple2 <child2>child2</child2> </root> """ parser = Parser(environment=Environment(loader=None)) template = parser.parse(tmpl, template_name='test') root = template.root_element self.assertEqual(len(root.children), 5) self.assertIsInstance(root.children[0], AnonymusElement) self.assertEqual(root.children[0].text, 'some') self.assertIsInstance(root.children[1], AnonymusElement) self.assertEqual(root.children[1].text, 'example text') self.assertIsInstance(root.children[3], AnonymusElement) self.assertEqual(root.children[3].text, 'exmaple2') self.assertEqual(root.children[2].children[0].text, 'child1') self.assertEqual(root.children[4].children[0].text, 'child2')
def test_first(self): tmpl = { 'tagName': 'body', 'attrs': {}, 'children': [ '\n ', { 'tagName': 'DS-CHAPTER', 'attrs': { 'style': 'width: 170mm; display: block;', 'b:valami': 'document.ugyfelnev' }, 'children': [ '\n ', { 'tagName': 'DS-HEADERS', 'attrs': {}, 'children': [ '\n ', { 'tagName': 'DS-HEADER', 'attrs': { 'page-sequence': 'all' }, 'children': [ '\n ', { 'tagName': 'IMG', 'attrs': { 'src': 'assets/img/cib_logo.png', 'style': 'width: 48mm; margin-top: 10mm;' }, 'children': [] }, '\n ' ] }, '\n ' ] }, '\n ', { 'tagName': 'DS-BODY', 'attrs': { 'style': 'border: 1px solid black;' }, 'children': [ '\n ', { 'tagName': 'DS-TEXTBOX', 'attrs': { 'style': 'width: 100%; margin: 1mm 0;' }, 'children': [ '\n ', { 'tagName': 'H3', 'attrs': {}, 'children': [ 'Tisztelt ', { 'tagName': 'DS-VAR', 'attrs': { 'b:text': 'document.ugyfelnev' }, 'children': ['[Ügyfélnév]'] }, '! ' ] }, '\n ', { 'tagName': 'P', 'attrs': { 'style': 'margin-top: 1cm;' }, 'children': [ '\n Ezúton értesítjük, hogy a ', { 'tagName': 'DS-VAR', 'attrs': { 'b:text': 'document.szerzodesszam' }, 'children': ['[Szerződésszám]'] }, ' számon nyilvántartott szerződése\n ', { 'tagName': 'B', 'attrs': {}, 'children': [{ 'tagName': 'DS-VAR', 'attrs': { 'b:text': 'document.szerzodes_lejarat_datum' }, 'children': [ '[Szerződés lejárat dátum]' ] }, ' napon lejár.'] }, '\n ', { 'tagName': 'BR', 'attrs': {}, 'children': [] }, 'Kérjük keresse fel bankfiókunkat.\n ' ] }, '\n ' ] }, '\n ' ] }, '\n ', { 'tagName': 'DS-FOOTERS', 'attrs': {}, 'children': [ '\n ', { 'tagName': 'DS-FOOTER', 'attrs': { 'page-sequence': 'all' }, 'children': [ '\n ', { 'tagName': 'DIV', 'attrs': { 'class': 'page_n_of_m' }, 'children': [] }, '\n ', { 'tagName': 'DIV', 'attrs': { 'style': 'border-top: 0.8pt solid black; width: 100%; padding-top: 2pt;' }, 'children': [ '\n ', { 'tagName': 'B', 'attrs': {}, 'children': [ '\n CIB Bank Zrt. CIB Bank Ltd.\n ' ] }, '\n H-1027 Budapest, Medve utca 4–14. H-1995 Budapest Telefon: (06 1) 423 1000 Fax: (06 1) 489\n 6500 Nyilvántartó cégbíróság: Fővárosi Törvényszék Cégbírósága Cégjegyzékszám: Cg. 01-10-041004 Adószám: 10136915-4-44\n CSASZ: 17781028-5-44 Csoport közösségi adószám: HU17781028 Tőzsdetagság: Budapesti Értéktőzsde Zrt. Tevékenységi\n engedély száma: 957/1997/F, III/41. 044-10/2002. BIC (SWIFT) kód: CIBHHUHB\n ' ] }, '\n ', { 'tagName': 'IMG', 'attrs': { 'src': 'assets/img/intesa_logo.png', 'style': 'width: 48mm; float: right; margin-top: -3mm;' }, 'children': [] }, '\n ' ] }, '\n ' ] }, '\n ' ] }, '\n ' ] } parser = DictParser(environment=Environment(loader=None)) template = parser.parse(tmpl, template_name='test')
def get_base_environment(): loader = FileSystemLoader(Path(__file__).parent / 'assets/base') env = Environment(loader=loader) return env
def test_parse_result(self): parser = Parser(environment=Environment(loader=None)) template = parser.parse(b'<root></root>', template_name='test') self.assertIsInstance(template, Template) self.assertIsInstance(template.root_element, BaseElement)
def test_initialize(self): env = Environment(loader=FileSystemLoader('~')) self.assertEqual(env.loader.search_path, [Path.home()])