1from pathlib import Path
2import re
3import runpy
4import shutil
5from tempfile import TemporaryDirectory
6import unittest
7import xml.etree.ElementTree as ET
8
9from native_xml import ns
10
11ROOT = Path(__file__).resolve().parent.parent
12FIXTURE = ROOT / 'corpus/tag-edit'
13compare = runpy.run_path(str(ROOT / 'tools/verify-document.py'))['compare']
14
15
16class TagEditTest(unittest.TestCase):
17 def test_rust_tag_definitions_and_task_states_render_natively(self):
18 with TemporaryDirectory() as temporary:
19 read = Path(temporary) / 'read'
20 shutil.copytree(FIXTURE / 'cold/read', read)
21 compare(FIXTURE / 'candidate', read)
22 page, = (ET.parse(path).getroot() for path in sorted((FIXTURE / 'cold/read').glob('page-*.xml')))
23 definitions = [(d.get('index'), d.get('type'), d.get('symbol'), d.get('name'), d.get('fontColor'), d.get('highlightColor'))
24 for d in page.findall('one:TagDef', ns)]
25 self.assertEqual(definitions, [('0', '0', '3', 'Rust task', 'automatic', 'none'), ('1', '1', '13', 'Important', '#FF0000', '#FFFF00')])
26 tagged = [([(t.get('index'), t.get('completed'), t.get('completionDate') is not None) for t in oe.findall('one:Tag', ns)],
27 re.sub(r'<[^>]*>', '', oe.find('one:T', ns).text or ''))
28 for oe in page.iter('{%s}OE' % ns['one']) if oe.find('one:T', ns) is not None]
29 self.assertEqual(tagged, [
30 ([('0', 'false', False)], 'Open task'),
31 ([('0', 'true', True)], 'Completed task'),
32 ([('0', 'false', False), ('1', 'false', False)], 'Important open task'),
33 ([], 'Untagged'),
34 ])
35
36
37if __name__ == '__main__':
38 unittest.main()