test for :ticket:`5497`, on_connect not called twice
(self)
| 3832 | |
| 3833 | @testing.only_on("sqlite+pysqlite") |
| 3834 | def test_initialize_connect_calls(self): |
| 3835 | """test for :ticket:`5497`, on_connect not called twice""" |
| 3836 | |
| 3837 | m1 = Mock() |
| 3838 | cls_ = testing.db.dialect.__class__ |
| 3839 | |
| 3840 | class SomeDialect(cls_): |
| 3841 | def initialize(self, connection): |
| 3842 | super().initialize(connection) |
| 3843 | m1.initialize(connection) |
| 3844 | |
| 3845 | def on_connect(self): |
| 3846 | oc = super().on_connect() |
| 3847 | |
| 3848 | def my_on_connect(conn): |
| 3849 | if oc: |
| 3850 | oc(conn) |
| 3851 | m1.on_connect(conn) |
| 3852 | |
| 3853 | return my_on_connect |
| 3854 | |
| 3855 | u1 = Mock( |
| 3856 | username=None, |
| 3857 | password=None, |
| 3858 | host=None, |
| 3859 | port=None, |
| 3860 | query={}, |
| 3861 | database=None, |
| 3862 | _instantiate_plugins=lambda kw: (u1, [], kw), |
| 3863 | _get_entrypoint=Mock( |
| 3864 | return_value=Mock(get_dialect_cls=lambda u: SomeDialect) |
| 3865 | ), |
| 3866 | ) |
| 3867 | eng = create_engine(u1, poolclass=QueuePool) |
| 3868 | # make sure other dialects aren't getting pulled in here |
| 3869 | eq_(eng.name, "sqlite") |
| 3870 | c = eng.connect() |
| 3871 | dbapi_conn_one = c.connection.dbapi_connection |
| 3872 | c.close() |
| 3873 | |
| 3874 | eq_( |
| 3875 | m1.mock_calls, |
| 3876 | [call.on_connect(dbapi_conn_one), call.initialize(mock.ANY)], |
| 3877 | ) |
| 3878 | |
| 3879 | c = eng.connect() |
| 3880 | |
| 3881 | eq_( |
| 3882 | m1.mock_calls, |
| 3883 | [call.on_connect(dbapi_conn_one), call.initialize(mock.ANY)], |
| 3884 | ) |
| 3885 | |
| 3886 | c2 = eng.connect() |
| 3887 | dbapi_conn_two = c2.connection.dbapi_connection |
| 3888 | |
| 3889 | is_not(dbapi_conn_one, dbapi_conn_two) |
| 3890 | |
| 3891 | eq_( |
nothing calls this directly
no test coverage detected