summaryrefslogtreecommitdiff
path: root/test/engine/test_parseconnect.py
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2021-09-14 23:38:00 +0200
committerMike Bayer <mike_mp@zzzcomputing.com>2021-11-26 10:14:44 -0500
commit5eb407f84bdabdbcd68975dbf76dc4c0809d7373 (patch)
tree0d37ab4b9c28d8a0fa6cefdcc1933d52ffd9a599 /test/engine/test_parseconnect.py
parent8ddb3ef165d0c2d6d7167bb861bb349e68b5e8df (diff)
downloadsqlalchemy-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.py58
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):