From 2a9e50a6a9baa2f1ca3216878ceb5a28c0ac024e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Apr 2023 19:43:33 +0200 Subject: [PATCH] Add test testing create-table statement creation for different sql dialects closes #8561 --- freqtrade/persistence/key_value_store.py | 2 +- tests/persistence/test_migrations.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/freqtrade/persistence/key_value_store.py b/freqtrade/persistence/key_value_store.py index 2d26acbd3..110a23d6c 100644 --- a/freqtrade/persistence/key_value_store.py +++ b/freqtrade/persistence/key_value_store.py @@ -36,7 +36,7 @@ class _KeyValueStoreModel(ModelBase): value_type: Mapped[ValueTypesEnum] = mapped_column(String(20), nullable=False) - string_value: Mapped[Optional[str]] + string_value: Mapped[Optional[str]] = mapped_column(String(255), nullable=True) datetime_value: Mapped[Optional[datetime]] float_value: Mapped[Optional[float]] int_value: Mapped[Optional[int]] diff --git a/tests/persistence/test_migrations.py b/tests/persistence/test_migrations.py index 854d39994..13b3f89bf 100644 --- a/tests/persistence/test_migrations.py +++ b/tests/persistence/test_migrations.py @@ -1,15 +1,18 @@ # pragma pylint: disable=missing-docstring, C0103 import logging +from importlib import import_module from pathlib import Path from unittest.mock import MagicMock import pytest from sqlalchemy import create_engine, select, text +from sqlalchemy.schema import CreateTable from freqtrade.constants import DEFAULT_DB_PROD_URL from freqtrade.enums import TradingMode from freqtrade.exceptions import OperationalException from freqtrade.persistence import Trade, init_db +from freqtrade.persistence.base import ModelBase from freqtrade.persistence.migrations import get_last_sequence_ids, set_sequence_ids from freqtrade.persistence.models import PairLock from tests.conftest import log_has @@ -411,3 +414,14 @@ def test_migrate_pairlocks(mocker, default_conf, fee, caplog): assert len(pairlocks) == 1 pairlocks[0].pair == 'ETH/BTC' pairlocks[0].side == '*' + + +@pytest.mark.parametrize('dialect', [ + 'sqlite', 'postgresql', 'mysql', 'oracle', 'mssql', + ]) +def test_create_table_compiles(dialect): + + dialect_mod = import_module(f"sqlalchemy.dialects.{dialect}") + for table in ModelBase.metadata.tables.values(): + create_sql = str(CreateTable(table).compile(dialect=dialect_mod.dialect())) + assert 'CREATE TABLE' in create_sql