diff --git a/planetmint/backend/tarantool/connection.py b/planetmint/backend/tarantool/connection.py index fdf6475..58061c5 100644 --- a/planetmint/backend/tarantool/connection.py +++ b/planetmint/backend/tarantool/connection.py @@ -57,13 +57,13 @@ class TarantoolDB: db_config = Config().get()["database"] cmd_resp = self.run_command(command=self.drop_path, config=db_config) self._reconnect() - return cmd_resp + # if "nil" in cmd_resp: + # raise DatabaseDoesNotExist def init_database(self): db_config = Config().get()["database"] cmd_resp = self.run_command(command=self.init_path, config=db_config) self._reconnect() - return cmd_resp def run_command(self, command: str, config: dict): from subprocess import run @@ -74,6 +74,4 @@ class TarantoolDB: input=execute_cmd, capture_output=True).stderr output = output.decode() - if "nil value" in output: - raise DatabaseDoesNotExist - return False if "nil value" in output else True + return output diff --git a/planetmint/backend/tarantool/schema.py b/planetmint/backend/tarantool/schema.py index 69665ce..c7f50b8 100644 --- a/planetmint/backend/tarantool/schema.py +++ b/planetmint/backend/tarantool/schema.py @@ -1,3 +1,5 @@ +import warnings + from planetmint.backend.utils import module_dispatch_registrar from planetmint import backend from planetmint.backend.tarantool.connection import TarantoolDB @@ -6,5 +8,18 @@ register_schema = module_dispatch_registrar(backend.schema) @register_schema(TarantoolDB) -def drop_database(connection): +def drop_database(connection, not_used=None): connection.drop_database() + + +@register_schema(TarantoolDB) +def create_database(connection, not_used=None): + connection.init_database() + + +@register_schema(TarantoolDB) +def create_tables(connection, not_used=None): + """ + This function is not necessary for using backend tarantool. + """ + warnings.warn("Function ::create_tables:: Ignored. Not used for create_tables") diff --git a/planetmint/commands/planetmint.py b/planetmint/commands/planetmint.py index 314e13d..04db25b 100644 --- a/planetmint/commands/planetmint.py +++ b/planetmint/commands/planetmint.py @@ -245,12 +245,9 @@ def run_election_show(args, planet): def _run_init(): - # bdb = planetmint.Planetmint() - - # schema.init_database(connection=bdb.connection) - from planetmint.backend.connection import Connection - conn = Connection() - conn.init_database() + from planetmint.backend import schema + bdb = planetmint.Planetmint() + schema.init_database(connection=bdb.connection) @configure_planetmint @@ -259,7 +256,7 @@ def run_init(args): _run_init() -# @configure_planetmint +@configure_planetmint def run_drop(args): """Drop the database""" @@ -271,8 +268,7 @@ def run_drop(args): from planetmint.backend.connection import Connection from planetmint.backend import schema conn = Connection() - return conn.drop_database() - # schema.drop_database(connection=conn) + schema.drop_database(conn) def run_recover(b): diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 01f5f9b..b8b3165 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -122,20 +122,18 @@ def test_drop_db_when_interactive_yes(mock_db_drop, monkeypatch): assert mock_db_drop.called -# @patch('planetmint.backend.schema.drop_database') -# def test_drop_db_when_db_does_not_exist(mock_db_drop, capsys): -def test_drop_db_when_db_does_not_exist(): +@patch('planetmint.backend.schema.drop_database') +def test_drop_db_when_db_does_not_exist(mock_db_drop, capsys): from planetmint.config import Config from planetmint.common.exceptions import DatabaseDoesNotExist from planetmint.commands.planetmint import run_drop args = Namespace(config=None, yes=True) - # mock_db_drop.side_effect = DatabaseDoesNotExist + mock_db_drop.side_effect = DatabaseDoesNotExist - cmd_resp = run_drop(args) - assert cmd_resp == False # TODO Error now appears because stdout is not readed by function. - # output_message = capsys.readouterr()[1] - # assert output_message == "Cannot drop '{name}'. The database does not exist.\n".format( - # name=Config().get()['database']['name']) + run_drop(args) + output_message = capsys.readouterr()[1] + assert output_message == "Cannot drop '{name}'. The database does not exist.\n".format( + name=Config().get()['database']['name']) @patch('planetmint.backend.schema.drop_database')