|
35 | 35 | from faker_file.providers.odt_file import OdtFileProvider |
36 | 36 | from faker_file.providers.pdf_file import PdfFileProvider |
37 | 37 | from faker_file.providers.txt_file import TxtFileProvider |
| 38 | +from faker_file.providers.xml_file import XmlFileProvider |
38 | 39 |
|
39 | 40 | from cardinal_pythonlib.extract_text import ( |
40 | 41 | document_to_text, |
@@ -62,11 +63,12 @@ def _create_mock_objects(self) -> None: |
62 | 63 | ) |
63 | 64 |
|
64 | 65 | def _register_faker_providers(self) -> None: |
65 | | - self.fake = Faker() |
| 66 | + self.fake = Faker("en-GB") |
66 | 67 | self.fake.add_provider(DocxFileProvider) |
67 | 68 | self.fake.add_provider(OdtFileProvider) |
68 | 69 | self.fake.add_provider(PdfFileProvider) |
69 | 70 | self.fake.add_provider(TxtFileProvider) |
| 71 | + self.fake.add_provider(XmlFileProvider) |
70 | 72 |
|
71 | 73 | def _replace_external_tools_with_fakes(self) -> None: |
72 | 74 | # For external tools we assume the tools are running correctly |
@@ -275,3 +277,38 @@ def test_txt_converted(self) -> None: |
275 | 277 | text = document_to_text(filename=txt_file.data["filename"]) |
276 | 278 |
|
277 | 279 | self.assertEqual(text.strip(), content) |
| 280 | + |
| 281 | + def test_xml_converted(self) -> None: |
| 282 | + name = self.fake.name() |
| 283 | + address = self.fake.address() |
| 284 | + |
| 285 | + xml_file = self.fake.xml_file( |
| 286 | + num_rows=1, |
| 287 | + data_columns={ |
| 288 | + "name": name, |
| 289 | + "address": address, |
| 290 | + }, |
| 291 | + ) |
| 292 | + text = document_to_text(filename=xml_file.data["filename"]) |
| 293 | + |
| 294 | + self.assertEqual(text.strip(), f"{name}{address}") |
| 295 | + |
| 296 | + def test_unsupported_converted(self) -> None: |
| 297 | + with mock.patch.multiple( |
| 298 | + "cardinal_pythonlib.extract_text.subprocess", |
| 299 | + Popen=self.mock_popen, |
| 300 | + ): |
| 301 | + with NamedTemporaryFile(suffix=".exe", delete=False) as temp_file: |
| 302 | + temp_file.close() |
| 303 | + document_to_text(filename=temp_file.name, config=self.config) |
| 304 | + |
| 305 | + expected_calls = [ |
| 306 | + mock.call( |
| 307 | + ( |
| 308 | + f"{self.empty_dir}/strings", |
| 309 | + temp_file.name, |
| 310 | + ), |
| 311 | + stdout=subprocess.PIPE, |
| 312 | + ), |
| 313 | + ] |
| 314 | + self.mock_popen.assert_has_calls(expected_calls) |
0 commit comments