Source code for faker_file.tests.test_registry

import io
import logging
import unittest

from faker import Faker

from ..providers.txt_file import TxtFileProvider
from ..registry import FILE_REGISTRY, LOGGER

__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2022-2023 Artur Barseghyan"
__license__ = "MIT"
__all__ = ("RegistryTestCase",)


FAKER = Faker()
FAKER.add_provider(TxtFileProvider)


[docs]class RegistryTestCase(unittest.TestCase): """Test `registry` module."""
[docs] def test_integration(self: "RegistryTestCase") -> None: """Test `add`.""" # Create a TXT file. txt_file_1 = FAKER.txt_file() with self.subTest("Check if `add` works"): # Check if `add` works (the file is in the registry) self.assertIn(txt_file_1, FILE_REGISTRY._registry) with self.subTest("Check if `search` works"): # Check if `search` works res = FILE_REGISTRY.search(str(txt_file_1)) self.assertIsNotNone(res) self.assertEqual(res, txt_file_1) with self.subTest("Check if `remove` by `StringValue` works"): # Check if `remove` by `StringValue`. FILE_REGISTRY.remove(txt_file_1) self.assertNotIn(txt_file_1, FILE_REGISTRY._registry) with self.subTest("Check if `remove` by `str` works"): # Create another TXT file and check if `remove` by `str` works. txt_file_2 = FAKER.txt_file() self.assertIn(txt_file_2, FILE_REGISTRY._registry) FILE_REGISTRY.remove(str(txt_file_2)) self.assertNotIn(txt_file_2, FILE_REGISTRY._registry) with self.subTest("Check if `clean_up` works"): # Check if `clean_up` works txt_file_3 = FAKER.txt_file() txt_file_4 = FAKER.txt_file() txt_file_5 = FAKER.txt_file() self.assertIn(txt_file_3, FILE_REGISTRY._registry) self.assertIn(txt_file_4, FILE_REGISTRY._registry) self.assertIn(txt_file_5, FILE_REGISTRY._registry) FILE_REGISTRY.clean_up() self.assertNotIn(txt_file_3, FILE_REGISTRY._registry) self.assertNotIn(txt_file_4, FILE_REGISTRY._registry) self.assertNotIn(txt_file_5, FILE_REGISTRY._registry)
[docs] def test_remove_by_string_not_found(self): res = FILE_REGISTRY.remove("i_do_not_exist.ext") self.assertFalse(res)
[docs] def test_remove_exceptions(self): txt_file = FAKER.txt_file() txt_file.data["storage"].unlink(txt_file) res = FILE_REGISTRY.remove(txt_file) self.assertFalse(res)
[docs] def test_clean_up_exceptions(self): # Redirect logger output to a string stream log_stream = io.StringIO() handler = logging.StreamHandler(log_stream) LOGGER.addHandler(handler) txt_file = FAKER.txt_file() txt_file.data["storage"].unlink(txt_file) # Clean up registry FILE_REGISTRY.clean_up() # Check the content of the logging output log_output = log_stream.getvalue() self.assertIn( f"Failed to unlink file {txt_file.data['filename']}", log_output, ) # Clean up by removing the handler LOGGER.removeHandler(handler)