1from pathlib import Path
2import runpy
3import shutil
4from tempfile import TemporaryDirectory
5import unittest
6import xml.etree.ElementTree as ET
7
8from native_xml import ns
9
10ROOT = Path(__file__).resolve().parent.parent
11FIXTURE = ROOT / 'corpus/media-edit'
12compare = runpy.run_path(str(ROOT / 'tools/verify-document.py'))['compare']
13
14
15class MediaEditTest(unittest.TestCase):
16 def test_an_edit_next_to_a_recording_keeps_the_recording_and_its_annotation(self):
17 with TemporaryDirectory() as temporary:
18 read = Path(temporary) / 'read'
19 shutil.copytree(FIXTURE / 'cold/read', read)
20 compare(FIXTURE / 'candidate', read)
21 pages = [ET.parse(path).getroot() for path in sorted((FIXTURE / 'cold/read').glob('page-*.xml'))]
22 page = next(page for page in pages if page.get('name') == 'Files and recording')
23 media = page.find('.//one:MediaFile', ns)
24 self.assertEqual(media.get('preferredName'), 'silence.wav')
25 recording = media.find('one:MediaReference', ns).get('mediaID')
26 index = page.find('.//one:MediaIndex', ns)
27 self.assertEqual(index.get('timeIndex'), '500')
28 self.assertEqual(index.find('one:MediaReference', ns).get('mediaID'), recording)
29 texts = [t.text for t in page.findall('.//one:T', ns) if t.text]
30 self.assertIn('Added after recording', texts)
31
32
33if __name__ == '__main__':
34 unittest.main()