def test_should_print_root_files_given_root_files_enabled(self): self.config.root_files = True walker = CsvWalker(self.config, self.storage) helpers.setup_storage(self.storage, [{ 'folder': self.root_folder, 'files': [self.file_one, self.file_two] }]) walker.walk() self.mock_print.assert_has_calls_exactly([ call("Folder, Filename, Checksum"), call(", A File, None"), call(", B File, None") ]) self.mock_logger.info.assert_called_once_with("\ndone in 0.0 sec")
def test_should_print_all_folders(self): walker = TreeWalker(self.config, self.storage) helpers.setup_storage(self.storage, [ { 'folder': self.folder_one, 'files': [self.file_one] }, { 'folder': self.folder_two, 'files': [self.file_two] } ]) walker.walk() self.mock_print.assert_has_calls([ call(u"├─── A Folder".encode('utf-8')), call(u"│ └─── A File".encode('utf-8')), call(u"│ ".encode('utf-8')), call(u"└─── B Folder".encode('utf-8')), call(u" └─── B File".encode('utf-8')), call("2 directories, 2 files read in 0.0 sec") ])
def test_should_print_all_folders(self): walker = CsvWalker(self.config, self.storage) helpers.setup_storage(self.storage, [{ 'folder': self.folder_one, 'files': [self.file_one] }, { 'folder': self.folder_two, 'files': [self.file_two] }]) walker.walk() self.mock_print.assert_has_calls_exactly([ call("Folder, Filename, Checksum"), call("A Folder, A File, None"), call("B Folder, B File, None"), call("\ndone in 0.0 sec") ])
def test_should_not_copy_anything_given_dry_run_enabled(self): self.config.dry_run = True helpers.setup_storage(self.src_storage, [{ 'folder': self.folder_one, 'files': [self.file_one] }, { 'folder': self.folder_two, 'files': [self.file_one, self.file_two] }]) helpers.setup_storage(self.dest_storage, [{ 'folder': self.folder_two, 'files': [self.file_one] }]) self.sync.run() self.mock.assert_not_called()
def test_should_copy_missing_files_in_existing_folder(self): helpers.setup_storage(self.src_storage, [{ 'folder': self.folder_one, 'files': [self.file_one, self.file_two] }]) helpers.setup_storage(self.dest_storage, [{ 'folder': self.folder_one, 'files': [] }]) self.sync.run() self.mock.assert_has_calls_exactly([ call(self.file_one, self.folder_one.name, self.dest_storage), call(self.file_two, self.folder_one.name, self.dest_storage) ], any_order=True)
def test_should_copy_folder_for_each_missing_folder_given_some_exist_already(self): helpers.setup_storage(self.src_storage, [ { 'folder': self.folder_one, 'files': [self.file_one] }, { 'folder': self.folder_two, 'files': [self.file_one] }, { 'folder': self.folder_three, 'files': [self.file_one] }, { 'folder': self.folder_four, 'files': [self.file_one] }, ]) helpers.setup_storage(self.dest_storage, [ { 'folder': self.folder_four, 'files': [self.file_one] }, { 'folder': self.folder_three, 'files': [self.file_one] } ]) self.sync.run() self.mock.assert_has_calls_exactly([ call(self.file_one, self.folder_one.name, self.dest_storage), call(self.file_one, self.folder_two.name, self.dest_storage) ], any_order=True)
def test_should_print_root_files_given_root_files_enabled_and_folders_exist(self): self.config.root_files = True self.config.list_sort = False walker = TreeWalker(self.config, self.storage) helpers.setup_storage(self.storage, [ { 'folder': self.root_folder, 'files': [self.file_three] }, { 'folder': self.folder_one, 'files': [self.file_one] } ]) walker.walk() self.mock_print.assert_has_calls([ call(u"├─── C File [abc123]".encode('utf-8')), call(u"│ ".encode('utf-8')), call(u"└─── A Folder".encode('utf-8')), call(u" └─── A File".encode('utf-8')), call("1 directories, 2 files read in 0.0 sec") ])
def test_should_not_copy_folder_given_all_exist_already(self): helpers.setup_storage(self.src_storage, [{ 'folder': self.folder_one, 'files': [self.file_one] }, { 'folder': self.folder_two, 'files': [self.file_one] }]) helpers.setup_storage(self.dest_storage, [{ 'folder': self.folder_two, 'files': [self.file_one] }, { 'folder': self.folder_one, 'files': [self.file_one] }]) self.sync.run() self.mock.assert_not_called()
def test_should_print_only_folders_given_list_folders_enabled(self): self.config.list_folders = True walker = CsvWalker(self.config, self.storage) helpers.setup_storage(self.storage, [{ 'folder': self.folder_two, 'files': [self.file_three, self.file_two] }, { 'folder': self.folder_one, 'files': [self.file_one] }]) walker.walk() self.mock_print.assert_has_calls_exactly( [call("Folder"), call("B Folder"), call("A Folder")]) self.mock_logger.info.assert_called_once_with("\ndone in 0.0 sec")
def test_should_not_sort_folders_and_files_given_sort_disabled(self): self.config.list_sort = False walker = TreeWalker(self.config, self.storage) helpers.setup_storage(self.storage, [ { 'folder': self.folder_two, 'files': [self.file_three, self.file_two] }, { 'folder': self.folder_one, 'files': [self.file_one] } ]) walker.walk() self.mock_print.assert_has_calls([ call(u"├─── B Folder".encode('utf-8')), call(u"│ ├─── C File [abc123]".encode('utf-8')), call(u"│ └─── B File".encode('utf-8')), call(u"│ ".encode('utf-8')), call(u"└─── A Folder".encode('utf-8')), call(u" └─── A File".encode('utf-8')), call("2 directories, 3 files read in 0.0 sec") ])
def test_should_print_only_folders_given_list_folders_enabled(self): self.config.list_folders = True walker = TreeWalker(self.config, self.storage) helpers.setup_storage(self.storage, [{ 'folder': self.folder_two, 'files': [self.file_three, self.file_two] }, { 'folder': self.folder_one, 'files': [self.file_one] }]) walker.walk() self.mock_print.assert_has_calls([ call(u"├─── B Folder".encode('utf-8')), call(u"└─── A Folder".encode('utf-8')) ]) self.mock_logger.info.assert_called_once_with( "2 directories read in 0.0 sec")
def test_should_not_sort_folders_and_files_given_sort_disabled(self): self.config.list_sort = False walker = CsvWalker(self.config, self.storage) helpers.setup_storage(self.storage, [{ 'folder': self.folder_two, 'files': [self.file_three, self.file_two] }, { 'folder': self.folder_one, 'files': [self.file_one] }]) walker.walk() self.mock_print.assert_has_calls_exactly([ call("Folder, Filename, Checksum"), call("B Folder, C File, abc123"), call("B Folder, B File, None"), call("A Folder, A File, None"), call("\ndone in 0.0 sec") ])
def test_should_merge_files_in_root_folder_given_root_files_enabled(self): self.config.root_files = True helpers.setup_storage(self.src_storage, [ { 'folder': self.root_folder, 'files': [self.file_one, self.file_two] }, ]) helpers.setup_storage(self.dest_storage, [ { 'folder': self.root_folder, 'files': [self.file_two] }, ]) self.sync.run() self.mock.assert_has_calls_exactly([ call(self.file_one, '', self.dest_storage), ], any_order=True)
def test_should_not_print_connector_when_printing_root_files_given_folders_are_hidden( self): self.config.root_files = True walker = TreeWalker(self.config, self.storage) helpers.setup_storage(self.storage, [{ 'folder': self.root_folder, 'files': [self.file_one, self.file_two] }, { 'folder': self.folder_one, 'files': [] }]) walker.walk() self.mock_print.assert_has_calls_exactly([ call(u"├─── A File".encode('utf-8')), call(u"└─── B File".encode('utf-8')) ]) self.mock_logger.info.assert_called_once_with( "0 directories, 2 files (excluding 1 empty directories) read in 0.0 sec" )