diff options
Diffstat (limited to 'test/engine')
| -rw-r--r-- | test/engine/test_parseconnect.py | 58 | ||||
| -rw-r--r-- | test/engine/test_reconnect.py | 3 |
2 files changed, 60 insertions, 1 deletions
diff --git a/test/engine/test_parseconnect.py b/test/engine/test_parseconnect.py index c69b332a8..f12d32d5d 100644 --- a/test/engine/test_parseconnect.py +++ b/test/engine/test_parseconnect.py @@ -1037,6 +1037,64 @@ class TestRegNewDBAPI(fixtures.TestBase): ) +class TestGetDialect(fixtures.TestBase): + @testing.requires.sqlite + @testing.combinations(True, False, None) + def test_is_async_to_create_engine(self, is_async): + def get_dialect_cls(url): + url = url.set(drivername="sqlite") + return url.get_dialect() + + global MockDialectGetDialect + MockDialectGetDialect = Mock() + MockDialectGetDialect.get_dialect_cls.side_effect = get_dialect_cls + MockDialectGetDialect.get_async_dialect_cls.side_effect = ( + get_dialect_cls + ) + + registry.register("mockdialect", __name__, "MockDialectGetDialect") + + from sqlalchemy.dialects import sqlite + + kw = {} + if is_async is not None: + kw["_is_async"] = is_async + e = create_engine("mockdialect://", **kw) + + eq_(e.dialect.name, "sqlite") + assert isinstance(e.dialect, sqlite.dialect) + + if is_async: + eq_( + MockDialectGetDialect.mock_calls, + [ + call.get_async_dialect_cls(url.make_url("mockdialect://")), + call.engine_created(e), + ], + ) + else: + eq_( + MockDialectGetDialect.mock_calls, + [ + call.get_dialect_cls(url.make_url("mockdialect://")), + call.engine_created(e), + ], + ) + MockDialectGetDialect.reset_mock() + u = url.make_url("mockdialect://") + u.get_dialect(**kw) + if is_async: + eq_( + MockDialectGetDialect.mock_calls, + [call.get_async_dialect_cls(u)], + ) + else: + eq_( + MockDialectGetDialect.mock_calls, + [call.get_dialect_cls(u)], + ) + + class MockDialect(DefaultDialect): @classmethod def dbapi(cls, **kw): diff --git a/test/engine/test_reconnect.py b/test/engine/test_reconnect.py index afd027698..f37d1893f 100644 --- a/test/engine/test_reconnect.py +++ b/test/engine/test_reconnect.py @@ -365,7 +365,7 @@ class MockReconnectTest(fixtures.TestBase): ) self.mock_connect = call( - host="localhost", password="bar", user="foo", database="test" + host="localhost", password="bar", user="foo", dbname="test" ) # monkeypatch disconnect checker self.db.dialect.is_disconnect = lambda e, conn, cursor: isinstance( @@ -1321,6 +1321,7 @@ class InvalidateDuringResultTest(fixtures.TestBase): "+aiosqlite", "+aiomysql", "+asyncmy", + "+psycopg", ], "Buffers the result set and doesn't check for connection close", ) |
