def _add_more_data_in_nested_directory(self, number_of_extra_files: int=1) -> Tuple[str, List[int]]:
     """
     Adds more data in a directory nested inside the temp directory.
     :param number_of_extra_files: (optional) the number of files to put the new data in inside the nested directory
     :return: a tuple where the first value is the path to the new nested directory and the second is the new data
     """
     nested_directory_path = os.path.join(self.temp_directory, "nested")
     os.makedirs(nested_directory_path)
     more_data = [i for i in range(50)]
     write_data_to_files_in_temp_directory(more_data, number_of_extra_files, dir=nested_directory_path,
                                           file_prefix=TestSynchronisedFilesDataSource._FILE_PREFIX)
     return (nested_directory_path, more_data)
    def setUp(self):
        self.maxDiff = None

        self.data = [i for i in range(30)]
        self.temp_directory = write_data_to_files_in_temp_directory(self.data, 10)

        def extract_adapter(file_path: str) -> Any:
            return extract_data_from_file(file_path, parser=lambda data: int(data), separator='\n')

        self.source = StubFilesDataSource(self.temp_directory)
        self.source.is_data_file = MagicMock(return_value=True)
        self.source.extract_data_from_file = MagicMock(side_effect=extract_adapter)
    def test_get_all_when_file_created(self):
        self.source.start()
        block_until_synchronised_files_data_source_started(self.source)

        change_trigger = Semaphore(0)

        def on_change(change: FileSystemChange):
            if change == FileSystemChange.CREATE:
                change_trigger.release()

        self.source.add_listener(on_change)

        more_data = [i for i in range(50)]
        write_data_to_files_in_temp_directory(more_data, 10, dir=self.temp_directory,
                                              file_prefix=TestSynchronisedFilesDataSource._FILE_PREFIX)
        even_more_data = self._add_more_data_in_nested_directory(10)[1]

        triggers = 0
        while triggers != 20:
            change_trigger.acquire()
            triggers += 1

        logging.debug(self.source._origin_mapped_data)
        self.assertCountEqual(self.source.get_all(), self.data + more_data + even_more_data)
    def setUp(self):
        self.maxDiff = None

        self.data = [i for i in range(30)]
        self.temp_directory = write_data_to_files_in_temp_directory(
            self.data, 10, file_prefix=TestSynchronisedFilesDataSource._FILE_PREFIX)

        def extract_adapter(file_path: str) -> Any:
            return extract_data_from_file(file_path, parser=lambda data: int(data), separator='\n')

        def is_test_file(file_path: str) -> bool:
            return TestSynchronisedFilesDataSource._FILE_PREFIX in file_path

        self.source = StubSynchronisedInFileDataSource(self.temp_directory)
        self.source.is_data_file = MagicMock(side_effect=is_test_file)
        self.source.extract_data_from_file = MagicMock(side_effect=extract_adapter)