def test_run(self, *mocks):
        config = {}
        conduit = Mock()
        inventory = Mock()

        _purge_unwanted_modules = mocks[0]
        _import_modules = mocks[1]
        _import_modules.return_value = []
        _fetch_modules = mocks[2]
        _fetch_modules.return_value = []
        _fetch_manifest = mocks[3]
        _fetch_manifest.return_value = 'path,sum,size'

        # testing

        method = SynchronizeWithDirectory(conduit, config)
        method._run(inventory)

        # validation

        _fetch_manifest.assert_called_with()
        _fetch_modules.assert_called_with(_fetch_manifest())
        _import_modules.assert_called_with(inventory, _fetch_modules())
        _purge_unwanted_modules.assert_called_with(inventory, _import_modules())
    def test_run_fetch_manifest_failed(self, *mocks):
        config = {}
        conduit = Mock()
        inventory = Mock()

        _purge_unwanted_modules = mocks[0]
        _import_modules = mocks[1]
        _import_modules.return_value = []
        _fetch_modules = mocks[2]
        _fetch_modules.return_value = []
        _fetch_manifest = mocks[3]
        _fetch_manifest.return_value = None

        # testing

        method = SynchronizeWithDirectory(conduit, config)
        method._run(inventory)

        # validation

        _fetch_manifest.assert_called_with()
        self.assertFalse(_fetch_modules.called)
        self.assertFalse(_import_modules.called)
        self.assertFalse(_purge_unwanted_modules.called)