def test_should_move_directory_to_destination(self, mock_exists, mock_move, mock_rmtree):

        mock_exists.return_value = False

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01'])

        mock_move.assert_called_with('target/tmp/configviewer/hosts/devweb01.new-revision-54', 'target/tmp/configviewer/hosts/devweb01')
    def test_should_not_remove_directory_if_it_does_not_already_exist(self, mock_exists, mock_move, mock_rmtree):

        mock_exists.return_value = False

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01'])

        self.assert_mock_never_called(mock_rmtree)
    def test_should_not_do_anything_if_no_hosts_are_given(
            self, mock_move, mock_rmtree):

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, [])

        self.assert_mock_never_called(mock_move)
        self.assert_mock_never_called(mock_rmtree)
    def test_should_remove_directories_of_hosts_if_they_already_exist(self, mock_exists, mock_move, mock_rmtree):

        mock_exists.return_value = True
        self.mock_config_rpm_maker._read_integer_from_file.return_value = 42

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01', 'tuvweb01'])

        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/devweb01')
        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/tuvweb01')
    def test_should_remove_temporary_directory_if_the_revision_of_the_file_in_the_directory_is_higher(self, mock_exists, mock_move, mock_rmtree):

        self.mock_config_rpm_maker._read_integer_from_file.return_value = 99

        mock_exists.return_value = True

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01'])

        mock_rmtree.assert_called_with('target/tmp/configviewer/hosts/devweb01.new-revision-54')
    def test_should_not_remove_directory_if_the_revision_of_the_file_in_the_directory_is_higher(self, mock_exists, mock_move, mock_rmtree):

        self.mock_config_rpm_maker._read_integer_from_file.return_value = 99

        mock_exists.return_value = True

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01'])

        self.assertTrue(call('target/tmp/configviewer/hosts/devweb01') not in mock_rmtree.call_args_list)
    def test_should_not_remove_directory_if_it_does_not_already_exist(
            self, mock_exists, mock_move, mock_rmtree):

        mock_exists.return_value = False

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01'])

        self.assert_mock_never_called(mock_rmtree)
    def test_should_remove_directory_if_it_does_already_exist(self, mock_build_config_viewer_host_directory, mock_exists, mock_move, mock_rmtree):

        mock_build_config_viewer_host_directory.return_value = 'target/tmp/configviewer/hosts/devweb01'
        self.mock_config_rpm_maker._read_integer_from_file.return_value = 53

        mock_exists.return_value = True

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01'])

        mock_rmtree.assert_called_with('target/tmp/configviewer/hosts/devweb01')
    def test_should_move_directory_to_destination(self, mock_exists, mock_move,
                                                  mock_rmtree):

        mock_exists.return_value = False

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01'])

        mock_move.assert_called_with(
            'target/tmp/configviewer/hosts/devweb01.new-revision-54',
            'target/tmp/configviewer/hosts/devweb01')
    def test_should_remove_directories_of_hosts_if_they_already_exist(
            self, mock_exists, mock_move, mock_rmtree):

        mock_exists.return_value = True
        self.mock_config_rpm_maker._read_integer_from_file.return_value = 42

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01', 'tuvweb01'])

        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/devweb01')
        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/tuvweb01')
    def test_should_remove_temporary_directory_if_the_revision_of_the_file_in_the_directory_is_higher(
            self, mock_exists, mock_move, mock_rmtree):

        self.mock_config_rpm_maker._read_integer_from_file.return_value = 99

        mock_exists.return_value = True

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01'])

        mock_rmtree.assert_called_with(
            'target/tmp/configviewer/hosts/devweb01.new-revision-54')
    def test_should_not_remove_directory_if_the_revision_of_the_file_in_the_directory_is_higher(
            self, mock_exists, mock_move, mock_rmtree):

        self.mock_config_rpm_maker._read_integer_from_file.return_value = 99

        mock_exists.return_value = True

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01'])

        self.assertTrue(
            call('target/tmp/configviewer/hosts/devweb01') not in
            mock_rmtree.call_args_list)
    def test_should_remove_directory_if_it_does_already_exist(
            self, mock_build_config_viewer_host_directory, mock_exists,
            mock_move, mock_rmtree):

        mock_build_config_viewer_host_directory.return_value = 'target/tmp/configviewer/hosts/devweb01'
        self.mock_config_rpm_maker._read_integer_from_file.return_value = 53

        mock_exists.return_value = True

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01'])

        mock_rmtree.assert_called_with(
            'target/tmp/configviewer/hosts/devweb01')
    def test_should_remove_directories_of_hosts_if_they_already_exist_and_should_leave_them_if_they_have_a_higher_revision(
            self, mock_exists, mock_move, mock_rmtree):
        def read_integer_from_file_side_effect(path):
            if path.endswith('devweb01.rev'):
                return 99
            elif path.endswith('tuvweb01.rev'):
                raise Exception(
                    'This should not happen since the exists side effect returns False'
                )
            elif path.endswith('berweb01.rev'):
                return 42
            else:
                raise Exception("Unknown path %s" % path)

        self.mock_config_rpm_maker._read_integer_from_file.side_effect = read_integer_from_file_side_effect

        def exists_side_effect(path):
            if path.endswith('devweb01'):
                return True
            elif path.endswith('tuvweb01'):
                return False
            elif path.endswith('berweb01'):
                return True
            else:
                raise Exception("Unknown path %s" % path)

        mock_exists.side_effect = exists_side_effect

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(
            self.mock_config_rpm_maker, ['devweb01', 'tuvweb01', 'berweb01'])

        mock_rmtree.assert_any_call(
            'target/tmp/configviewer/hosts/devweb01.new-revision-54')
        self.assertTrue(
            call('target/tmp/configviewer/hosts/devweb01.new-revision-54',
                 'target/tmp/configviewer/hosts/devweb01') not in
            mock_move.call_args_list)

        self.assertTrue(
            call('target/tmp/configviewer/hosts/tuvweb01') not in
            mock_rmtree.call_args_list)
        mock_move.assert_any_call(
            'target/tmp/configviewer/hosts/tuvweb01.new-revision-54',
            'target/tmp/configviewer/hosts/tuvweb01')

        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/berweb01')
        mock_move.assert_any_call(
            'target/tmp/configviewer/hosts/berweb01.new-revision-54',
            'target/tmp/configviewer/hosts/berweb01')
    def test_should_remove_directories_of_hosts_if_they_already_exist_and_should_leave_them_if_they_have_a_higher_revision(self, mock_exists, mock_move, mock_rmtree):

        def read_integer_from_file_side_effect(path):
            if path.endswith('devweb01.rev'):
                return 99
            elif path.endswith('tuvweb01.rev'):
                raise Exception('This should not happen since the exists side effect returns False')
            elif path.endswith('berweb01.rev'):
                return 42
            else:
                raise Exception("Unknown path %s" % path)

        self.mock_config_rpm_maker._read_integer_from_file.side_effect = read_integer_from_file_side_effect

        def exists_side_effect(path):
            if path.endswith('devweb01'):
                return True
            elif path.endswith('tuvweb01'):
                return False
            elif path.endswith('berweb01'):
                return True
            else:
                raise Exception("Unknown path %s" % path)

        mock_exists.side_effect = exists_side_effect

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, ['devweb01', 'tuvweb01', 'berweb01'])

        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/devweb01.new-revision-54')
        self.assertTrue(call('target/tmp/configviewer/hosts/devweb01.new-revision-54', 'target/tmp/configviewer/hosts/devweb01') not in mock_move.call_args_list)

        self.assertTrue(call('target/tmp/configviewer/hosts/tuvweb01') not in mock_rmtree.call_args_list)
        mock_move.assert_any_call('target/tmp/configviewer/hosts/tuvweb01.new-revision-54', 'target/tmp/configviewer/hosts/tuvweb01')

        mock_rmtree.assert_any_call('target/tmp/configviewer/hosts/berweb01')
        mock_move.assert_any_call('target/tmp/configviewer/hosts/berweb01.new-revision-54', 'target/tmp/configviewer/hosts/berweb01')
    def test_should_not_do_anything_if_no_hosts_are_given(self, mock_move, mock_rmtree):

        ConfigRpmMaker._move_configviewer_dirs_to_final_destination(self.mock_config_rpm_maker, [])

        self.assert_mock_never_called(mock_move)
        self.assert_mock_never_called(mock_rmtree)