import os import pytest from click.testing import CliRunner from unittest.mock import patch from tempfile import mkstemp from pyheatpump.cli import cli from pyheatpump.config import config from pyheatpump.db import DB from pyheatpump.models import VariableValue @pytest.fixture(scope='module') def set_test_db(): _, tmpdb = mkstemp(suffix='.db', dir=os.getcwd(), ) print(f'Will store database in {tmpdb}') config['heatpump']['database'] = tmpdb if not DB.initialize(os.path.join(os.getcwd(), 'db/pyheatpump.sql')): sys.exit(-1) if not DB.initialize(os.path.join(os.getcwd(), 'db/test_variables.sql')): sys.exit(-1) if not DB.initialize(os.path.join(os.getcwd(), 'db/test_variable_values.sql')): sys.exit(-1) yield os.unlink(tmpdb) @pytest.fixture def runner(): return CliRunner() @patch('pyheatpump.models.VariableValue.insert') def test_mock_variable_value(VariableValueInsert, set_test_db, runner): res = runner.invoke(cli, 'fetch') try: assert res.exit_code == 0 VariableValueInsert.assert_called() except Exception as e: print(res.output) raise e