diff options
author | Federico Caselli <cfederico87@gmail.com> | 2021-09-14 23:38:00 +0200 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-11-26 10:14:44 -0500 |
commit | 5eb407f84bdabdbcd68975dbf76dc4c0809d7373 (patch) | |
tree | 0d37ab4b9c28d8a0fa6cefdcc1933d52ffd9a599 /test/engine/test_parseconnect.py | |
parent | 8ddb3ef165d0c2d6d7167bb861bb349e68b5e8df (diff) | |
download | sqlalchemy-5eb407f84bdabdbcd68975dbf76dc4c0809d7373.tar.gz |
Added support for ``psycopg`` dialect.
Both sync and async versions are supported.
Fixes: #6842
Change-Id: I57751c5028acebfc6f9c43572562405453a2f2a4
Diffstat (limited to 'test/engine/test_parseconnect.py')
-rw-r--r-- | test/engine/test_parseconnect.py | 58 |
1 files changed, 58 insertions, 0 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): |