Example #1
0
    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")
        ])
Example #4
0
    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()
Example #5
0
    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)
Example #6
0
    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")
        ])
Example #8
0
    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()
Example #9
0
    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")
        ])
Example #11
0
    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")
        ])
Example #13
0
    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)
Example #14
0
    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"
        )